]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
[cwksp] Return NULL when 0 bytes are requested
authorNick Terrell <terrelln@fb.com>
Mon, 12 Oct 2020 21:19:04 +0000 (14:19 -0700)
committerNick Terrell <terrelln@fb.com>
Fri, 30 Oct 2020 17:55:34 +0000 (10:55 -0700)
This ensures that the buffer is never used.

lib/compress/zstd_cwksp.h

index 77b91a9bdd09f375111147553dff7826d5418aff..5d07352f7008a3d159ded89daafdf0485207bda5 100644 (file)
@@ -178,6 +178,8 @@ MEM_STATIC size_t ZSTD_cwksp_align(size_t size, size_t const align) {
  * else is though.
  */
 MEM_STATIC size_t ZSTD_cwksp_alloc_size(size_t size) {
+    if (size == 0)
+        return 0;
 #if ZSTD_ADDRESS_SANITIZER && !defined (ZSTD_ASAN_DONT_POISON_WORKSPACE)
     return size + 2 * ZSTD_CWKSP_ASAN_REDZONE_SIZE;
 #else
@@ -228,6 +230,9 @@ MEM_STATIC void* ZSTD_cwksp_reserve_internal(
     ZSTD_cwksp_internal_advance_phase(ws, phase);
     alloc = (BYTE *)ws->allocStart - bytes;
 
+    if (bytes == 0)
+        return NULL;
+
 #if ZSTD_ADDRESS_SANITIZER && !defined (ZSTD_ASAN_DONT_POISON_WORKSPACE)
     /* over-reserve space */
     alloc = (BYTE *)alloc - 2 * ZSTD_CWKSP_ASAN_REDZONE_SIZE;