From 6bd6b6f7d3ced4e5b1ef8598cc44508a7f60e29a Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Mon, 12 Oct 2020 14:19:04 -0700 Subject: [PATCH] [cwksp] Return NULL when 0 bytes are requested This ensures that the buffer is never used. --- lib/compress/zstd_cwksp.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/compress/zstd_cwksp.h b/lib/compress/zstd_cwksp.h index 77b91a9bd..5d07352f7 100644 --- a/lib/compress/zstd_cwksp.h +++ b/lib/compress/zstd_cwksp.h @@ -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; -- 2.47.3