diff options
Diffstat (limited to 'src/lib/libc/stdlib/malloc.c')
| -rw-r--r-- | src/lib/libc/stdlib/malloc.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c index 2cd443191d..b48dcb3978 100644 --- a/src/lib/libc/stdlib/malloc.c +++ b/src/lib/libc/stdlib/malloc.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: malloc.c,v 1.153 2014/04/14 10:29:41 otto Exp $ */ | 1 | /* $OpenBSD: malloc.c,v 1.154 2014/04/21 13:17:32 deraadt Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2008, 2010, 2011 Otto Moerbeek <otto@drijf.net> | 3 | * Copyright (c) 2008, 2010, 2011 Otto Moerbeek <otto@drijf.net> |
| 4 | * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> | 4 | * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> |
| @@ -1432,6 +1432,17 @@ calloc(size_t nmemb, size_t size) | |||
| 1432 | return r; | 1432 | return r; |
| 1433 | } | 1433 | } |
| 1434 | 1434 | ||
| 1435 | void * | ||
| 1436 | mallocarray(size_t nmemb, size_t size) | ||
| 1437 | { | ||
| 1438 | if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && | ||
| 1439 | nmemb > 0 && SIZE_MAX / nmemb < size) { | ||
| 1440 | errno = ENOMEM; | ||
| 1441 | return NULL; | ||
| 1442 | } | ||
| 1443 | return malloc(size * nmemb); | ||
| 1444 | } | ||
| 1445 | |||
| 1435 | static void * | 1446 | static void * |
| 1436 | mapalign(struct dir_info *d, size_t alignment, size_t sz, int zero_fill) | 1447 | mapalign(struct dir_info *d, size_t alignment, size_t sz, int zero_fill) |
| 1437 | { | 1448 | { |
