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; }