diff options
author | otto <> | 2003-07-13 08:35:44 +0000 |
---|---|---|
committer | otto <> | 2003-07-13 08:35:44 +0000 |
commit | 5bd302f63a71af85f1fa22b787d4c05dacd277ea (patch) | |
tree | 285e3fc33718a1f4b6fee4cd4fffe1b2371a3b53 /src | |
parent | e009bddf83a2ff6730df17373637db7afcc6e025 (diff) | |
download | openbsd-5bd302f63a71af85f1fa22b787d4c05dacd277ea.tar.gz openbsd-5bd302f63a71af85f1fa22b787d4c05dacd277ea.tar.bz2 openbsd-5bd302f63a71af85f1fa22b787d4c05dacd277ea.zip |
Fix two cases where malloc() returns NULL but does not set errno to ENOMEM.
ok tdeval@ henning@ millert@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libc/stdlib/malloc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c index e129473203..3ce107857a 100644 --- a/src/lib/libc/stdlib/malloc.c +++ b/src/lib/libc/stdlib/malloc.c | |||
@@ -8,7 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #if defined(LIBC_SCCS) && !defined(lint) | 10 | #if defined(LIBC_SCCS) && !defined(lint) |
11 | static char rcsid[] = "$OpenBSD: malloc.c,v 1.56 2003/05/14 17:46:39 tdeval Exp $"; | 11 | static char rcsid[] = "$OpenBSD: malloc.c,v 1.57 2003/07/13 08:35:44 otto Exp $"; |
12 | #endif /* LIBC_SCCS and not lint */ | 12 | #endif /* LIBC_SCCS and not lint */ |
13 | 13 | ||
14 | /* | 14 | /* |
@@ -387,6 +387,7 @@ map_pages(pages) | |||
387 | #ifdef MALLOC_EXTRA_SANITY | 387 | #ifdef MALLOC_EXTRA_SANITY |
388 | wrterror("(ES): overflow in map_pages fails\n"); | 388 | wrterror("(ES): overflow in map_pages fails\n"); |
389 | #endif /* MALLOC_EXTRA_SANITY */ | 389 | #endif /* MALLOC_EXTRA_SANITY */ |
390 | errno = ENOMEM; | ||
390 | return (NULL); | 391 | return (NULL); |
391 | } | 392 | } |
392 | tail = result + pages; | 393 | tail = result + pages; |
@@ -838,8 +839,10 @@ imalloc(size) | |||
838 | if (suicide) | 839 | if (suicide) |
839 | abort(); | 840 | abort(); |
840 | 841 | ||
841 | if ((size + malloc_pagesize) < size) /* Check for overflow */ | 842 | if ((size + malloc_pagesize) < size) { /* Check for overflow */ |
842 | result = NULL; | 843 | result = NULL; |
844 | errno = ENOMEM; | ||
845 | } | ||
843 | else if (size <= malloc_maxsize) | 846 | else if (size <= malloc_maxsize) |
844 | result = malloc_bytes(size); | 847 | result = malloc_bytes(size); |
845 | else | 848 | else |