**Describe the bug**
I discovered an issue while fuzzing the c-blosc2 project based on information registered with ossfuzz. 
Specifically, the memset function within the project is receiving a negative size value. I'd like to report this concern.

**To Reproduce**
![image](https://github.com/Blosc/c-blosc2/assets/141209612/26e5e688-f759-4cdb-9023-bf773ea1035c)
[c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-210440.txt](https://github.com/Blosc/c-blosc2/files/13177364/c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21.04.40.txt)

**Expected behavior**
A clear and concise description of what you expected to happen.

**Logs**
```c
./decompress_chunk_fuzzer ./c-blosc2--decompress_chunk_fuzz
er--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21\:04\:40
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 3374851614
INFO: Loaded 1 modules   (44657 inline 8-bit counters): 44657 [0xc00e60, 0xc0bcd1),
INFO: Loaded 1 PC tables (44657 PCs): 44657 [0xc0bcd8,0xcba3e8),
./decompress_chunk_fuzzer: Running 1 inputs 1 time(s) each.
Running: ./c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21:04:40
=================================================================
==97==ERROR: AddressSanitizer: negative-size-param: (size=-2147483648)
SCARINESS: 10 (negative-size-param)
    #0 0x52e663 in __asan_memset /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:26:3
    #1 0x9b70c9 in ndlz8_decompress /src/c-blosc2/plugins/codecs/ndlz/ndlz8x8.c:468:3
    #2 0x585b64 in blosc_d /src/c-blosc2/blosc/blosc2.c:1870:24
    #3 0x58f7f9 in serial_blosc /src/c-blosc2/blosc/blosc2.c:1971:16
    #4 0x58f7f9 in do_job /src/c-blosc2/blosc/blosc2.c:2138:15
    #5 0x57de19 in blosc_run_decompression_with_context /src/c-blosc2/blosc/blosc2.c:2904:13
    #6 0x57e5ca in blosc2_decompress /src/c-blosc2/blosc/blosc2.c:2982:12
    #7 0x56c6f0 in LLVMFuzzerTestOneInput /src/c-blosc2/tests/fuzz/fuzz_decompress_chunk.c:34:5
    #8 0x43dec3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
    #9 0x429622 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:324:6
    #10 0x42eecc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:860:9
    #11 0x458402 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #12 0x7f8a944ee082 in __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16
    #13 0x41f7ed in _start (/out/c-blosc2/decompress_chunk_fuzzer+0x41f7ed)

DEDUP_TOKEN: __asan_memset--ndlz8_decompress--blosc_d
0x61600000038b is located 11 bytes inside of 488-byte region [0x616000000380,0x616000000568)
allocated by thread T0 here:
    #0 0x52fba7 in posix_memalign /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
    #1 0x588043 in my_malloc /src/c-blosc2/blosc/blosc2.c:186:9
    #2 0x588043 in init_thread_context /src/c-blosc2/blosc/blosc2.c:2028:25
    #3 0x587d7d in create_thread_context /src/c-blosc2/blosc/blosc2.c:2065:12
    #4 0x58f10b in do_job /src/c-blosc2/blosc/blosc2.c:2131:33
    #5 0x57de19 in blosc_run_decompression_with_context /src/c-blosc2/blosc/blosc2.c:2904:13
    #6 0x57e5ca in blosc2_decompress /src/c-blosc2/blosc/blosc2.c:2982:12
    #7 0x56c6f0 in LLVMFuzzerTestOneInput /src/c-blosc2/tests/fuzz/fuzz_decompress_chunk.c:34:5
    #8 0x43dec3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
    #9 0x429622 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:324:6
    #10 0x42eecc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:860:9
    #11 0x458402 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #12 0x7f8a944ee082 in __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16

DEDUP_TOKEN: posix_memalign--my_malloc--init_thread_context
SUMMARY: AddressSanitizer: negative-size-param /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:26:3 in __asan_memset
==97==ABORTING
```

**System information:**
 - OS: Ubuntu 20.04
 - Compiler: clang
 - Version: 15.0.0

**Additional context**
Below is a captured image of the cause and debugging process where the size of memset becomes negative.
![image](https://github.com/Blosc/c-blosc2/assets/141209612/c5517e7a-8f01-435d-b5c3-dd3bfac39f97)
![image](https://github.com/Blosc/c-blosc2/assets/141209612/e9d9f834-072d-48d3-b40e-250cd7dc472b)

Error in ndlz8_decompress: memset Receiving Negative Size Value
This is a GitHub Issue
repo:c-blosc2
owner:Blosc
Title : Error in ndlz8_decompress: memset Receiving Negative Size Value
Issue date:

--- start body ---
**Describe the bug**
I discovered an issue while fuzzing the c-blosc2 project based on information registered with ossfuzz. 
Specifically, the memset function within the project is receiving a negative size value. I'd like to report this concern.

**To Reproduce**
![image](https://github.com/Blosc/c-blosc2/assets/141209612/26e5e688-f759-4cdb-9023-bf773ea1035c)
[c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-210440.txt](https://github.com/Blosc/c-blosc2/files/13177364/c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21.04.40.txt)

**Expected behavior**
A clear and concise description of what you expected to happen.

**Logs**
```c
./decompress_chunk_fuzzer ./c-blosc2--decompress_chunk_fuzz
er--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21\:04\:40
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 3374851614
INFO: Loaded 1 modules   (44657 inline 8-bit counters): 44657 [0xc00e60, 0xc0bcd1),
INFO: Loaded 1 PC tables (44657 PCs): 44657 [0xc0bcd8,0xcba3e8),
./decompress_chunk_fuzzer: Running 1 inputs 1 time(s) each.
Running: ./c-blosc2--decompress_chunk_fuzzer--crash-28cb7e770ed25f9f3b4f0ad6c5203fee-2023-10-20-21:04:40
=================================================================
==97==ERROR: AddressSanitizer: negative-size-param: (size=-2147483648)
SCARINESS: 10 (negative-size-param)
    #0 0x52e663 in __asan_memset /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:26:3
    #1 0x9b70c9 in ndlz8_decompress /src/c-blosc2/plugins/codecs/ndlz/ndlz8x8.c:468:3
    #2 0x585b64 in blosc_d /src/c-blosc2/blosc/blosc2.c:1870:24
    #3 0x58f7f9 in serial_blosc /src/c-blosc2/blosc/blosc2.c:1971:16
    #4 0x58f7f9 in do_job /src/c-blosc2/blosc/blosc2.c:2138:15
    #5 0x57de19 in blosc_run_decompression_with_context /src/c-blosc2/blosc/blosc2.c:2904:13
    #6 0x57e5ca in blosc2_decompress /src/c-blosc2/blosc/blosc2.c:2982:12
    #7 0x56c6f0 in LLVMFuzzerTestOneInput /src/c-blosc2/tests/fuzz/fuzz_decompress_chunk.c:34:5
    #8 0x43dec3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
    #9 0x429622 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:324:6
    #10 0x42eecc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:860:9
    #11 0x458402 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #12 0x7f8a944ee082 in __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16
    #13 0x41f7ed in _start (/out/c-blosc2/decompress_chunk_fuzzer+0x41f7ed)

DEDUP_TOKEN: __asan_memset--ndlz8_decompress--blosc_d
0x61600000038b is located 11 bytes inside of 488-byte region [0x616000000380,0x616000000568)
allocated by thread T0 here:
    #0 0x52fba7 in posix_memalign /src/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
    #1 0x588043 in my_malloc /src/c-blosc2/blosc/blosc2.c:186:9
    #2 0x588043 in init_thread_context /src/c-blosc2/blosc/blosc2.c:2028:25
    #3 0x587d7d in create_thread_context /src/c-blosc2/blosc/blosc2.c:2065:12
    #4 0x58f10b in do_job /src/c-blosc2/blosc/blosc2.c:2131:33
    #5 0x57de19 in blosc_run_decompression_with_context /src/c-blosc2/blosc/blosc2.c:2904:13
    #6 0x57e5ca in blosc2_decompress /src/c-blosc2/blosc/blosc2.c:2982:12
    #7 0x56c6f0 in LLVMFuzzerTestOneInput /src/c-blosc2/tests/fuzz/fuzz_decompress_chunk.c:34:5
    #8 0x43dec3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:611:15
    #9 0x429622 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:324:6
    #10 0x42eecc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:860:9
    #11 0x458402 in main /src/llvm-project/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #12 0x7f8a944ee082 in __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16

DEDUP_TOKEN: posix_memalign--my_malloc--init_thread_context
SUMMARY: AddressSanitizer: negative-size-param /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:26:3 in __asan_memset
==97==ABORTING
```

**System information:**
 - OS: Ubuntu 20.04
 - Compiler: clang
 - Version: 15.0.0

**Additional context**
Below is a captured image of the cause and debugging process where the size of memset becomes negative.
![image](https://github.com/Blosc/c-blosc2/assets/141209612/c5517e7a-8f01-435d-b5c3-dd3bfac39f97)
![image](https://github.com/Blosc/c-blosc2/assets/141209612/e9d9f834-072d-48d3-b40e-250cd7dc472b)

--- end body ---

The c-blosc2 project has a vulnerability where the memset function is called with a negative size value, leading to a potential Denial of Service (DoS) condition. This issue arises during the decompression process, specifically in the ndlz8_decompress function, which can be exploited by providing specially crafted input that triggers the negative size parameter. This can cause the application to crash or behave unexpectedly.