diff options
Diffstat (limited to 'usr/src/cmd/ssh/libssh/common/xmalloc.c')
-rw-r--r-- | usr/src/cmd/ssh/libssh/common/xmalloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/usr/src/cmd/ssh/libssh/common/xmalloc.c b/usr/src/cmd/ssh/libssh/common/xmalloc.c index ef11fce812..b9ae011d3c 100644 --- a/usr/src/cmd/ssh/libssh/common/xmalloc.c +++ b/usr/src/cmd/ssh/libssh/common/xmalloc.c @@ -34,6 +34,22 @@ xmalloc(size_t size) } void * +xcalloc(size_t nmemb, size_t size) +{ + void *ptr; + + if (size == 0 || nmemb == 0) + fatal("xcalloc: zero size"); + if (SIZE_T_MAX / nmemb < size) + fatal("xcalloc: nmemb * size > SIZE_T_MAX"); + ptr = calloc(nmemb, size); + if (ptr == NULL) + fatal("xcalloc: out of memory (allocating %lu bytes)", + (u_long)(size * nmemb)); + return ptr; +} + +void * xrealloc(void *ptr, size_t new_size) { void *new_ptr; |