summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib/malloc.c
diff options
context:
space:
mode:
authorotto <otto@openbsd.org>2003-07-13 08:35:44 +0000
committerotto <otto@openbsd.org>2003-07-13 08:35:44 +0000
commit1a3529ecfab4aa349a2ca8a8a9a3fb4af57a1e83 (patch)
treea46472e6d97a3c90df779cb65d8c3fb4b078becc /lib/libc/stdlib/malloc.c
parentwhoa, gcc wasn't at fault: i_loadstore was missing 5 bits, which was causing (diff)
downloadwireguard-openbsd-1a3529ecfab4aa349a2ca8a8a9a3fb4af57a1e83.tar.xz
wireguard-openbsd-1a3529ecfab4aa349a2ca8a8a9a3fb4af57a1e83.zip
Fix two cases where malloc() returns NULL but does not set errno to ENOMEM.
ok tdeval@ henning@ millert@
Diffstat (limited to 'lib/libc/stdlib/malloc.c')
-rw-r--r--lib/libc/stdlib/malloc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
index e1294732030..3ce107857a4 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.56 2003/05/14 17:46:39 tdeval Exp $";
+static char rcsid[] = "$OpenBSD: malloc.c,v 1.57 2003/07/13 08:35:44 otto Exp $";
#endif /* LIBC_SCCS and not lint */
/*
@@ -387,6 +387,7 @@ map_pages(pages)
#ifdef MALLOC_EXTRA_SANITY
wrterror("(ES): overflow in map_pages fails\n");
#endif /* MALLOC_EXTRA_SANITY */
+ errno = ENOMEM;
return (NULL);
}
tail = result + pages;
@@ -838,8 +839,10 @@ imalloc(size)
if (suicide)
abort();
- if ((size + malloc_pagesize) < size) /* Check for overflow */
+ if ((size + malloc_pagesize) < size) { /* Check for overflow */
result = NULL;
+ errno = ENOMEM;
+ }
else if (size <= malloc_maxsize)
result = malloc_bytes(size);
else