From eb13ec0cffa3eeece6cc2194305a6d298450772e Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Fri, 25 Mar 2016 09:44:12 +0100 Subject: [PATCH] Make sodium_malloc(0) well-defined. It always returns NULL. --- src/libsodium/sodium/utils.c | 4 ++-- test/default/sodium_utils2.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libsodium/sodium/utils.c b/src/libsodium/sodium/utils.c index 5228e40b..12e5dbf8 100644 --- a/src/libsodium/sodium/utils.c +++ b/src/libsodium/sodium/utils.c @@ -577,8 +577,8 @@ sodium_malloc(const size_t size) { void *ptr; - if ((ptr = _sodium_malloc(size)) == NULL) { - return NULL; /* LCOV_EXCL_LINE */ + if (size == (size_t) 0 || (ptr = _sodium_malloc(size)) == NULL) { + return NULL; } memset(ptr, (int) GARBAGE_VALUE, size); diff --git a/test/default/sodium_utils2.c b/test/default/sodium_utils2.c index b89d0782..35a35e84 100644 --- a/test/default/sodium_utils2.c +++ b/test/default/sodium_utils2.c @@ -39,6 +39,9 @@ int main(void) if (sodium_malloc(SIZE_MAX - 1U) != NULL) { return 1; } + if (sodium_malloc(0U) != NULL) { + return 1; + } if (sodium_allocarray(SIZE_MAX / 2U + 1U, SIZE_MAX / 2U) != NULL) { return 1; }