summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
authortholo <tholo@openbsd.org>1997-04-05 05:05:44 +0000
committertholo <tholo@openbsd.org>1997-04-05 05:05:44 +0000
commit2be5e86ce04e9a6ab9f87b9f63de08af75041d29 (patch)
tree6eaadb5d57b4441568522ca071d8ccc9bfbbe71f /lib/libc/stdlib
parentPatch from BSDI (via Keith Bostic, via NetBSD): (diff)
downloadwireguard-openbsd-2be5e86ce04e9a6ab9f87b9f63de08af75041d29.tar.xz
wireguard-openbsd-2be5e86ce04e9a6ab9f87b9f63de08af75041d29.zip
Check for overflow; from FreeBSD
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r--lib/libc/stdlib/malloc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
index da2c17b83d1..fc82a4f4190 100644
--- a/lib/libc/stdlib/malloc.c
+++ b/lib/libc/stdlib/malloc.c
@@ -8,7 +8,7 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$OpenBSD: malloc.c,v 1.22 1997/02/11 17:46:36 niklas Exp $";
+static char rcsid[] = "$OpenBSD: malloc.c,v 1.23 1997/04/05 05:05:44 tholo Exp $";
#endif /* LIBC_SCCS and not lint */
/*
@@ -756,7 +756,9 @@ imalloc(size)
if (suicide)
abort();
- if (size <= malloc_maxsize)
+ if ((size + malloc_pagesize) < size) /* Check for overflow */
+ result = 0;
+ else if (size <= malloc_maxsize)
result = malloc_bytes(size);
else
result = malloc_pages(size);