Module Name: src Committed By: nia Date: Sat Oct 30 10:44:25 UTC 2021
Modified Files: src/usr.sbin/ndbootd: ndbootd.c Log Message: ndbootd(8): Rework allocation macros to add integer overflow checking. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/ndbootd/ndbootd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/ndbootd/ndbootd.c diff -u src/usr.sbin/ndbootd/ndbootd.c:1.12 src/usr.sbin/ndbootd/ndbootd.c:1.13 --- src/usr.sbin/ndbootd/ndbootd.c:1.12 Sun Apr 8 09:43:51 2007 +++ src/usr.sbin/ndbootd/ndbootd.c Sat Oct 30 10:44:25 2021 @@ -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 @@ __RCSID("$NetBSD: ndbootd.c,v 1.12 2007/ #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 @@ int _ndbootd_debug; /* 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: */