From 2aa703fcc7eb1ff284c272f77122fe73b8047c4e Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Fri, 25 Mar 2016 16:26:37 +0100 Subject: [PATCH] Restore the previous sodium_malloc(0) behavior If aligned memory cannot be obtained, allocate 1 byte to always return a non-NULL pointer. --- src/libsodium/sodium/utils.c | 4 ++-- test/default/sodium_utils2.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libsodium/sodium/utils.c b/src/libsodium/sodium/utils.c index 12e5dbf8..9358e056 100644 --- a/src/libsodium/sodium/utils.c +++ b/src/libsodium/sodium/utils.c @@ -526,7 +526,7 @@ _unprotected_ptr_from_user_ptr(void * const ptr) static __attribute__ ((malloc)) void * _sodium_malloc(const size_t size) { - return malloc(size); + return malloc(size > (size_t) 0U ? size : (size_t) 1U); } #else static __attribute__ ((malloc)) void * @@ -577,7 +577,7 @@ sodium_malloc(const size_t size) { void *ptr; - if (size == (size_t) 0 || (ptr = _sodium_malloc(size)) == NULL) { + if ((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 7742945d..606b9b0c 100644 --- a/test/default/sodium_utils2.c +++ b/test/default/sodium_utils2.c @@ -39,7 +39,7 @@ int main(void) if (sodium_malloc(SIZE_MAX - 1U) != NULL) { return 1; } - if (sodium_malloc(0U) != NULL) { + if (sodium_malloc(0U) == NULL) { return 1; } if (sodium_allocarray(SIZE_MAX / 2U + 1U, SIZE_MAX / 2U) != NULL) {