From: Nick Terrell Date: Mon, 12 Oct 2020 21:19:04 +0000 (-0700) Subject: [cwksp] Return NULL when 0 bytes are requested X-Git-Tag: v1.4.7~38^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bd6b6f7d3ced4e5b1ef8598cc44508a7f60e29a;p=thirdparty%2Fzstd.git [cwksp] Return NULL when 0 bytes are requested This ensures that the buffer is never used. --- 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;