Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/ndbootd ndbootd(8): Rework allocation macros to add...



details:   https://anonhg.NetBSD.org/src/rev/5f2841dd0d15
branches:  trunk
changeset: 1024632:5f2841dd0d15
user:      nia <nia%NetBSD.org@localhost>
date:      Sat Oct 30 10:44:25 2021 +0000

description:
ndbootd(8): Rework allocation macros to add integer overflow checking.

diffstat:

 usr.sbin/ndbootd/ndbootd.c |  27 ++++++++++++++-------------
 1 files changed, 14 insertions(+), 13 deletions(-)

diffs (73 lines):

diff -r 46a186b3d54c -r 5f2841dd0d15 usr.sbin/ndbootd/ndbootd.c
--- a/usr.sbin/ndbootd/ndbootd.c        Sat Oct 30 10:34:18 2021 +0000
+++ b/usr.sbin/ndbootd/ndbootd.c        Sat Oct 30 10:44:25 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ndbootd.c,v 1.12 2007/04/08 09:43:51 scw Exp $ */
+/*     $NetBSD: ndbootd.c,v 1.13 2021/10/30 10:44:25 nia Exp $ */
 
 /* ndbootd.c - the Sun Network Disk (nd) daemon: */
 
@@ -81,7 +81,7 @@
 #if 0
 static const char _ndbootd_c_rcsid[] = "<<Id: ndbootd.c,v 1.9 2001/06/13 21:19:11 fredette Exp >>";
 #else
-__RCSID("$NetBSD: ndbootd.c,v 1.12 2007/04/08 09:43:51 scw Exp $");
+__RCSID("$NetBSD: ndbootd.c,v 1.13 2021/10/30 10:44:25 nia Exp $");
 #endif
 
 /* includes: */
@@ -128,8 +128,8 @@
 #endif                         /* !HAVE_SOCKADDR_SA_LEN */
 
 /* prototypes: */
-void *ndbootd_malloc _NDBOOTD_P((size_t));
-void *ndbootd_malloc0 _NDBOOTD_P((size_t));
+void *ndbootd_malloc _NDBOOTD_P((size_t, size_t));
+void *ndbootd_calloc _NDBOOTD_P((size_t, size_t));
 void *ndbootd_memdup _NDBOOTD_P((void *, size_t));
 
 /* globals: */
@@ -140,33 +140,34 @@
 
 /* allocators: */
 void *
-ndbootd_malloc(size_t size)
+ndbootd_malloc(size_t number, size_t size)
 {
-       void *buffer;
-       if ((buffer = malloc(size)) == NULL) {
+       void *buffer = NULL;
+       if (reallocarr(&buffer, number, size) != 0) {
                abort();
        }
        return (buffer);
 }
 void *
-ndbootd_malloc0(size_t size)
+ndbootd_calloc(size_t number, size_t size)
 {
        void *buffer;
-       buffer = ndbootd_malloc(size);
-       memset(buffer, 0, size);
+       if ((buffer = calloc(number, size)) == NULL) {
+               abort();
+       }
        return (buffer);
 }
 void *
 ndbootd_memdup(void *buffer0, size_t size)
 {
        void *buffer1;
-       buffer1 = ndbootd_malloc(size);
+       buffer1 = ndbootd_malloc(1, size);
        memcpy(buffer1, buffer0, size);
        return (buffer1);
 }
 #define ndbootd_free free
-#define ndbootd_new(t, c) ((t *) ndbootd_malloc(sizeof(t) * (c)))
-#define ndbootd_new0(t, c) ((t *) ndbootd_malloc0(sizeof(t) * (c)))
+#define ndbootd_new(t, c) ((t *) ndbootd_malloc(c, sizeof(t)))
+#define ndbootd_new0(t, c) ((t *) ndbootd_calloc(c, sizeof(t)))
 #define ndbootd_dup(t, b, c) ((t *) ndbootd_memdup(b, c))
 
 /* this calculates an IP packet header checksum: */



Home | Main Index | Thread Index | Old Index