From b5701aa73a632ec384dd8e14c19bf595b62d37c7 Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Mon, 21 Apr 2014 13:17:32 +0000 Subject: Introducing: void *mallocarray(size_t nmemb, size_t size); Like calloc(), except without the cleared-memory gaurantee ok beck guenther, discussed for more than a year... --- src/lib/libc/stdlib/malloc.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/lib/libc/stdlib/malloc.c') 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 @@ -/* $OpenBSD: malloc.c,v 1.153 2014/04/14 10:29:41 otto Exp $ */ +/* $OpenBSD: malloc.c,v 1.154 2014/04/21 13:17:32 deraadt Exp $ */ /* * Copyright (c) 2008, 2010, 2011 Otto Moerbeek * Copyright (c) 2012 Matthew Dempsky @@ -1432,6 +1432,17 @@ calloc(size_t nmemb, size_t size) return r; } +void * +mallocarray(size_t nmemb, size_t size) +{ + if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && + nmemb > 0 && SIZE_MAX / nmemb < size) { + errno = ENOMEM; + return NULL; + } + return malloc(size * nmemb); +} + static void * mapalign(struct dir_info *d, size_t alignment, size_t sz, int zero_fill) { -- cgit v1.2.3-55-g6feb