diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2014-06-24 19:06:05 +0200 |
---|---|---|
committer | Tobias Klauser <tklauser@distanz.ch> | 2014-06-25 10:18:09 +0200 |
commit | 46b0ace509d9ed013915e9ab8013c7c712e11395 (patch) | |
tree | a2882741a458995c1d3303bf87e6c88ea17724a2 /xmalloc.c | |
parent | 6424dd90f721fd968c1159236f525ed59f355045 (diff) |
xmalloc: Add and use xcalloc
Add a wrapper for calloc which checks for integer overflows in the
calculation of the size to allocate.
Use xcalloc to allocate an array of objects instead of calculating the
size ourselves, which might cause an integer overflow.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'xmalloc.c')
-rw-r--r-- | xmalloc.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -34,6 +34,21 @@ void *xmalloc(size_t size) return ptr; } +void *xcalloc(size_t nmemb, size_t size) +{ + void *ptr; + + if (unlikely(nmemb == 0 || size == 0)) + panic("xcalloc: zero size\n"); + + ptr = calloc(nmemb, size); + if (unlikely(ptr == NULL)) + panic("xcalloc: out of memory (allocating %zu members of " + "%zu bytes)\n", nmemb, size); + + return ptr; +} + void *xzmalloc(size_t size) { void *ptr = xmalloc(size); |