1
0
mirror of https://github.com/facebook/zstd.git synced 2025-07-07 12:01:15 +03:00

added a test for ZSTD_compressSequencesAndLiterals

checks that srcSize is present in the frame header
and bounds the window size.
This commit is contained in:
Yann Collet
2024-12-19 07:38:14 -08:00
parent 0a54f6f288
commit a80f55f47d

View File

@ -3880,7 +3880,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
DISPLAYLEVEL(3, "test%3i : ZSTD_compressSequencesAndLiterals : ", testNb++); DISPLAYLEVEL(3, "test%3i : ZSTD_compressSequencesAndLiterals : ", testNb++);
{ {
const size_t srcSize = 500 KB; const size_t srcSize = 497000;
const BYTE* const src = (BYTE*)CNBuffer; const BYTE* const src = (BYTE*)CNBuffer;
BYTE* const dst = (BYTE*)compressedBuffer; BYTE* const dst = (BYTE*)compressedBuffer;
const size_t dstCapacity = ZSTD_compressBound(srcSize); const size_t dstCapacity = ZSTD_compressBound(srcSize);
@ -3929,6 +3929,21 @@ static int basicUnitTests(U32 const seed, double compressibility)
goto _output_error; goto _output_error;
} }
} }
{ ZSTD_frameHeader zfh;
size_t const zfhStatus = ZSTD_getFrameHeader(&zfh, dst, compressedSize);
if (zfhStatus != 0) {
DISPLAY("Error reading frame header\n");
goto _output_error;
}
if (zfh.frameContentSize != srcSize) {
DISPLAY("Error: ZSTD_compressSequencesAndLiterals() did not report srcSize in the frame header\n");
goto _output_error;
}
if (zfh.windowSize > srcSize) {
DISPLAY("Error: ZSTD_compressSequencesAndLiterals() did not resized window size to smaller contentSize\n");
goto _output_error;
}
}
{ size_t const dSize = ZSTD_decompress(decompressBuffer, decompressSize, dst, compressedSize); { size_t const dSize = ZSTD_decompress(decompressBuffer, decompressSize, dst, compressedSize);
if (ZSTD_isError(dSize)) { if (ZSTD_isError(dSize)) {
DISPLAY("Error during decompression of frame produced by ZSTD_compressSequencesAndLiterals()\n"); DISPLAY("Error during decompression of frame produced by ZSTD_compressSequencesAndLiterals()\n");