Skip to content

Commit f5d9d57

Browse files
authored
Merge pull request #4228 from facebook/skippableMagicVariant
ZSTD_getFrameHeader() for skippable frames
2 parents cf5e53f + 04a2a02 commit f5d9d57

File tree

11 files changed

+63
-46
lines changed

11 files changed

+63
-46
lines changed

contrib/linux-kernel/linux_zstd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ void zstd_register_sequence_producer(
465465
*
466466
* See zstd_lib.h.
467467
*/
468-
typedef ZSTD_frameHeader zstd_frame_header;
468+
typedef ZSTD_FrameHeader zstd_frame_header;
469469

470470
/**
471471
* zstd_get_frame_header() - extracts parameters from a zstd or skippable frame

doc/zstd_manual.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,25 +1244,25 @@ <h3>Streaming decompression functions</h3><pre></pre><b><pre></pre></b><BR>
12441244
or an error code (if srcSize is too small)
12451245
</p></pre><BR>
12461246

1247-
<pre><b>typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
1247+
<pre><b>typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_FrameType_e;
12481248
</b></pre><BR>
12491249
<pre><b>typedef struct {
12501250
unsigned long long frameContentSize; </b>/* if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty" */<b>
12511251
unsigned long long windowSize; </b>/* can be very large, up to <= frameContentSize */<b>
12521252
unsigned blockSizeMax;
1253-
ZSTD_frameType_e frameType; </b>/* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */<b>
1253+
ZSTD_FrameType_e frameType; </b>/* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */<b>
12541254
unsigned headerSize;
12551255
unsigned dictID;
12561256
unsigned checksumFlag;
12571257
unsigned _reserved1;
12581258
unsigned _reserved2;
12591259
} ZSTD_frameHeader;
12601260
</b></pre><BR>
1261-
<pre><b>ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); </b>/**< doesn't consume input */<b>
1261+
<pre><b>ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize); </b>/**< doesn't consume input */<b>
12621262
</b>/*! ZSTD_getFrameHeader_advanced() :<b>
12631263
* same as ZSTD_getFrameHeader(),
12641264
* with added capability to select a format (like ZSTD_f_zstd1_magicless) */
1265-
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format);
1265+
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader_advanced(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format);
12661266
</b><p> decode Frame Header, or requires larger `srcSize`.
12671267
@return : 0, `zfhPtr` is correctly filled,
12681268
>0, `srcSize` is too small, value is wanted `srcSize` amount,
@@ -2124,7 +2124,7 @@ <h3>Buffer-less streaming compression functions</h3><pre></pre><b><pre>ZSTD_DEPR
21242124
>0 : `srcSize` is too small, please provide at least result bytes on next attempt.
21252125
errorCode, which can be tested using ZSTD_isError().
21262126

2127-
It fills a ZSTD_frameHeader structure with important information to correctly decode the frame,
2127+
It fills a ZSTD_FrameHeader structure with important information to correctly decode the frame,
21282128
such as the dictionary ID, content size, or maximum back-reference distance (`windowSize`).
21292129
Note that these values could be wrong, either because of data corruption, or because a 3rd party deliberately spoofs false information.
21302130
As a consequence, check that values remain within valid application range.

lib/common/zstd_trace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ typedef struct {
7474
* Is the dictionary cold?
7575
* Only set on decompression.
7676
*/
77-
unsigned dictionaryIsCold;
77+
int dictionaryIsCold;
7878
/**
7979
* The dictionary size or zero if no dictionary.
8080
*/

lib/decompress/zstd_decompress.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize)
444444
* @return : 0, `zfhPtr` is correctly filled,
445445
* >0, `srcSize` is too small, value is wanted `srcSize` amount,
446446
** or an error code, which can be tested using ZSTD_isError() */
447-
size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format)
447+
size_t ZSTD_getFrameHeader_advanced(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format)
448448
{
449449
const BYTE* ip = (const BYTE*)src;
450450
size_t const minInputSize = ZSTD_startingInputLength(format);
@@ -484,8 +484,10 @@ size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, s
484484
if (srcSize < ZSTD_SKIPPABLEHEADERSIZE)
485485
return ZSTD_SKIPPABLEHEADERSIZE; /* magic number + frame length */
486486
ZSTD_memset(zfhPtr, 0, sizeof(*zfhPtr));
487-
zfhPtr->frameContentSize = MEM_readLE32((const char *)src + ZSTD_FRAMEIDSIZE);
488487
zfhPtr->frameType = ZSTD_skippableFrame;
488+
zfhPtr->dictID = MEM_readLE32(src) - ZSTD_MAGIC_SKIPPABLE_START;
489+
zfhPtr->headerSize = ZSTD_SKIPPABLEHEADERSIZE;
490+
zfhPtr->frameContentSize = MEM_readLE32((const char *)src + ZSTD_FRAMEIDSIZE);
489491
return 0;
490492
}
491493
RETURN_ERROR(prefix_unknown, "");
@@ -554,7 +556,7 @@ size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, s
554556
* @return : 0, `zfhPtr` is correctly filled,
555557
* >0, `srcSize` is too small, value is wanted `srcSize` amount,
556558
* or an error code, which can be tested using ZSTD_isError() */
557-
size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize)
559+
size_t ZSTD_getFrameHeader(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize)
558560
{
559561
return ZSTD_getFrameHeader_advanced(zfhPtr, src, srcSize, ZSTD_f_zstd1);
560562
}
@@ -572,7 +574,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize)
572574
return ret == 0 ? ZSTD_CONTENTSIZE_UNKNOWN : ret;
573575
}
574576
#endif
575-
{ ZSTD_frameHeader zfh;
577+
{ ZSTD_FrameHeader zfh;
576578
if (ZSTD_getFrameHeader(&zfh, src, srcSize) != 0)
577579
return ZSTD_CONTENTSIZE_ERROR;
578580
if (zfh.frameType == ZSTD_skippableFrame) {
@@ -750,7 +752,7 @@ static ZSTD_frameSizeInfo ZSTD_findFrameSizeInfo(const void* src, size_t srcSize
750752
const BYTE* const ipstart = ip;
751753
size_t remainingSize = srcSize;
752754
size_t nbBlocks = 0;
753-
ZSTD_frameHeader zfh;
755+
ZSTD_FrameHeader zfh;
754756

755757
/* Extract Frame Header */
756758
{ size_t const ret = ZSTD_getFrameHeader_advanced(&zfh, src, srcSize, format);
@@ -843,7 +845,7 @@ size_t ZSTD_decompressionMargin(void const* src, size_t srcSize)
843845
ZSTD_frameSizeInfo const frameSizeInfo = ZSTD_findFrameSizeInfo(src, srcSize, ZSTD_f_zstd1);
844846
size_t const compressedSize = frameSizeInfo.compressedSize;
845847
unsigned long long const decompressedBound = frameSizeInfo.decompressedBound;
846-
ZSTD_frameHeader zfh;
848+
ZSTD_FrameHeader zfh;
847849

848850
FORWARD_IF_ERROR(ZSTD_getFrameHeader(&zfh, src, srcSize), "");
849851
if (ZSTD_isError(compressedSize) || decompressedBound == ZSTD_CONTENTSIZE_ERROR)
@@ -917,7 +919,7 @@ static size_t ZSTD_setRleBlock(void* dst, size_t dstCapacity,
917919
return regenSize;
918920
}
919921

920-
static void ZSTD_DCtx_trace_end(ZSTD_DCtx const* dctx, U64 uncompressedSize, U64 compressedSize, unsigned streaming)
922+
static void ZSTD_DCtx_trace_end(ZSTD_DCtx const* dctx, U64 uncompressedSize, U64 compressedSize, int streaming)
921923
{
922924
#if ZSTD_TRACE
923925
if (dctx->traceCtx && ZSTD_trace_decompress_end != NULL) {
@@ -1641,7 +1643,7 @@ unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize)
16411643
* ZSTD_getFrameHeader(), which will provide a more precise error code. */
16421644
unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize)
16431645
{
1644-
ZSTD_frameHeader zfp = { 0, 0, 0, ZSTD_frame, 0, 0, 0, 0, 0 };
1646+
ZSTD_FrameHeader zfp = { 0, 0, 0, ZSTD_frame, 0, 0, 0, 0, 0 };
16451647
size_t const hError = ZSTD_getFrameHeader(&zfp, src, srcSize);
16461648
if (ZSTD_isError(hError)) return 0;
16471649
return zfp.dictID;
@@ -1999,7 +2001,7 @@ size_t ZSTD_estimateDStreamSize(size_t windowSize)
19992001
size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize)
20002002
{
20012003
U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX; /* note : should be user-selectable, but requires an additional parameter (or a dctx) */
2002-
ZSTD_frameHeader zfh;
2004+
ZSTD_FrameHeader zfh;
20032005
size_t const err = ZSTD_getFrameHeader(&zfh, src, srcSize);
20042006
if (ZSTD_isError(err)) return err;
20052007
RETURN_ERROR_IF(err>0, srcSize_wrong, "");

lib/decompress/zstd_decompress_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ struct ZSTD_DCtx_s
136136
const void* virtualStart; /* virtual start of previous segment if it was just before current one */
137137
const void* dictEnd; /* end of previous segment */
138138
size_t expected;
139-
ZSTD_frameHeader fParams;
139+
ZSTD_FrameHeader fParams;
140140
U64 processedCSize;
141141
U64 decodedSize;
142142
blockType_e bType; /* used in ZSTD_decompressContinue(), store blockType between block header decoding and block decompression stages */

lib/zstd.h

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,34 +1491,36 @@ ZSTDLIB_STATIC_API unsigned long long ZSTD_findDecompressedSize(const void* src,
14911491
ZSTDLIB_STATIC_API unsigned long long ZSTD_decompressBound(const void* src, size_t srcSize);
14921492

14931493
/*! ZSTD_frameHeaderSize() :
1494-
* srcSize must be >= ZSTD_FRAMEHEADERSIZE_PREFIX.
1494+
* srcSize must be large enough, aka >= ZSTD_FRAMEHEADERSIZE_PREFIX.
14951495
* @return : size of the Frame Header,
14961496
* or an error code (if srcSize is too small) */
14971497
ZSTDLIB_STATIC_API size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize);
14981498

1499-
typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
1499+
typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_FrameType_e;
1500+
#define ZSTD_frameType_e ZSTD_FrameType_e /* old name */
15001501
typedef struct {
15011502
unsigned long long frameContentSize; /* if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty" */
15021503
unsigned long long windowSize; /* can be very large, up to <= frameContentSize */
15031504
unsigned blockSizeMax;
1504-
ZSTD_frameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */
1505+
ZSTD_FrameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */
15051506
unsigned headerSize;
1506-
unsigned dictID;
1507+
unsigned dictID; /* for ZSTD_skippableFrame, contains the skippable magic variant [0-15] */
15071508
unsigned checksumFlag;
15081509
unsigned _reserved1;
15091510
unsigned _reserved2;
1510-
} ZSTD_frameHeader;
1511+
} ZSTD_FrameHeader;
1512+
#define ZSTD_frameHeader ZSTD_FrameHeader /* old name */
15111513

15121514
/*! ZSTD_getFrameHeader() :
1513-
* decode Frame Header, or requires larger `srcSize`.
1514-
* @return : 0, `zfhPtr` is correctly filled,
1515-
* >0, `srcSize` is too small, @return value is the wanted `srcSize` amount,
1515+
* decode Frame Header into `zfhPtr`, or requires larger `srcSize`.
1516+
* @return : 0 => header is complete, `zfhPtr` is correctly filled,
1517+
* >0 => `srcSize` is too small, @return value is the wanted `srcSize` amount, `zfhPtr` is not filled,
15161518
* or an error code, which can be tested using ZSTD_isError() */
1517-
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */
1519+
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize);
15181520
/*! ZSTD_getFrameHeader_advanced() :
15191521
* same as ZSTD_getFrameHeader(),
15201522
* with added capability to select a format (like ZSTD_f_zstd1_magicless) */
1521-
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format);
1523+
ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader_advanced(ZSTD_FrameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format);
15221524

15231525
/*! ZSTD_decompressionMargin() :
15241526
* Zstd supports in-place decompression, where the input and output buffers overlap.
@@ -3047,7 +3049,7 @@ size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_
30473049
>0 : `srcSize` is too small, please provide at least result bytes on next attempt.
30483050
errorCode, which can be tested using ZSTD_isError().
30493051
3050-
It fills a ZSTD_frameHeader structure with important information to correctly decode the frame,
3052+
It fills a ZSTD_FrameHeader structure with important information to correctly decode the frame,
30513053
such as the dictionary ID, content size, or maximum back-reference distance (`windowSize`).
30523054
Note that these values could be wrong, either because of data corruption, or because a 3rd party deliberately spoofs false information.
30533055
As a consequence, check that values remain within valid application range.

programs/fileio.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2401,7 +2401,7 @@ FIO_zstdErrorHelp(const FIO_prefs_t* const prefs,
24012401
size_t err,
24022402
const char* srcFileName)
24032403
{
2404-
ZSTD_frameHeader header;
2404+
ZSTD_FrameHeader header;
24052405

24062406
/* Help message only for one specific error */
24072407
if (ZSTD_getErrorCode(err) != ZSTD_error_frameParameter_windowTooLarge)
@@ -3201,7 +3201,7 @@ FIO_analyzeFrames(fileInfo_t* info, FILE* const srcFile)
32013201
{ U32 const magicNumber = MEM_readLE32(headerBuffer);
32023202
/* Zstandard frame */
32033203
if (magicNumber == ZSTD_MAGICNUMBER) {
3204-
ZSTD_frameHeader header;
3204+
ZSTD_FrameHeader header;
32053205
U64 const frameContentSize = ZSTD_getFrameContentSize(headerBuffer, numBytesRead);
32063206
if ( frameContentSize == ZSTD_CONTENTSIZE_ERROR
32073207
|| frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN ) {

tests/fuzz/simple_round_trip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static size_t getDecompressionMargin(void const* compressed, size_t cSize, size_
3434
/* The macro should be correct in this case, but it may be smaller
3535
* because of e.g. block splitting, so take the smaller of the two.
3636
*/
37-
ZSTD_frameHeader zfh;
37+
ZSTD_FrameHeader zfh;
3838
size_t marginM;
3939
FUZZ_ZASSERT(ZSTD_getFrameHeader(&zfh, compressed, cSize));
4040
if (maxBlockSize == 0) {

tests/fuzz/zstd_frame_info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
2323
{
24-
ZSTD_frameHeader zfh;
24+
ZSTD_FrameHeader zfh;
2525
if (size == 0) {
2626
src = NULL;
2727
}

tests/fuzzer.c

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -955,7 +955,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
955955
ZSTD_freeCCtx(cctx);
956956
}
957957
{ /* ensure frame content size is missing */
958-
ZSTD_frameHeader zfh;
958+
ZSTD_FrameHeader zfh;
959959
size_t const ret = ZSTD_getFrameHeader(&zfh, compressedBuffer, compressedBufferSize);
960960
if (ret != 0 || zfh.frameContentSize != ZSTD_CONTENTSIZE_UNKNOWN) goto _output_error;
961961
}
@@ -2512,7 +2512,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
25122512

25132513
CHECK_VAR(cSize, ZSTD_compressEnd(ctxDuplicated, compressedBuffer, ZSTD_compressBound(testSize),
25142514
(const char*)CNBuffer + dictSize, testSize) );
2515-
{ ZSTD_frameHeader zfh;
2515+
{ ZSTD_FrameHeader zfh;
25162516
if (ZSTD_getFrameHeader(&zfh, compressedBuffer, cSize)) goto _output_error;
25172517
if ((zfh.frameContentSize != testSize) && (zfh.frameContentSize != 0)) goto _output_error;
25182518
} }
@@ -3585,7 +3585,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
35853585
DISPLAYLEVEL(3, "test%3i : decompress of magic-less frame : ", testNb++);
35863586
ZSTD_DCtx_reset(dctx, ZSTD_reset_session_and_parameters);
35873587
CHECK_Z( ZSTD_DCtx_setParameter(dctx, ZSTD_d_format, ZSTD_f_zstd1_magicless) );
3588-
{ ZSTD_frameHeader zfh;
3588+
{ ZSTD_FrameHeader zfh;
35893589
size_t const zfhrt = ZSTD_getFrameHeader_advanced(&zfh, compressedBuffer, cSize, ZSTD_f_zstd1_magicless);
35903590
if (zfhrt != 0) goto _output_error;
35913591
}
@@ -3943,7 +3943,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
39433943
goto _output_error;
39443944
}
39453945
}
3946-
{ ZSTD_frameHeader zfh;
3946+
{ ZSTD_FrameHeader zfh;
39473947
size_t const zfhStatus = ZSTD_getFrameHeader(&zfh, dst, compressedSize);
39483948
if (zfhStatus != 0) {
39493949
DISPLAY("Error reading frame header\n");
@@ -4111,15 +4111,28 @@ static int basicUnitTests(U32 const seed, double compressibility)
41114111

41124112

41134113
/* frame operations on skippable frames */
4114-
{ const char skippableFrame[] = "\x50\x2a\x4d\x18\x05\x0\x0\0abcde";
4115-
size_t const skippableFrameSize = sizeof(skippableFrame) - 1 /* remove final /0 */;
4114+
{ const char skippableFrame[] = "\x52\x2a\x4d\x18\x05\x0\x0\0abcde";
4115+
size_t const skippableFrameSize = sizeof(skippableFrame) - 1 /* remove the terminating /0 */;
41164116

41174117
DISPLAYLEVEL(3, "test%3i : ZSTD_findFrameCompressedSize on skippable frame : ", testNb++);
4118-
if (ZSTD_findFrameCompressedSize(skippableFrame, skippableFrameSize) != skippableFrameSize) goto _output_error;
4118+
CHECK(ZSTD_findFrameCompressedSize(skippableFrame, skippableFrameSize) == skippableFrameSize);
41194119
DISPLAYLEVEL(3, "OK \n");
41204120

41214121
DISPLAYLEVEL(3, "test%3i : ZSTD_getFrameContentSize on skippable frame : ", testNb++);
4122-
if (ZSTD_getFrameContentSize(skippableFrame, skippableFrameSize) != 0) goto _output_error;
4122+
CHECK(ZSTD_getFrameContentSize(skippableFrame, skippableFrameSize) == 0);
4123+
DISPLAYLEVEL(3, "OK \n");
4124+
4125+
DISPLAYLEVEL(3, "test%3i : ZSTD_getFrameHeader on skippable frame : ", testNb++);
4126+
{ ZSTD_FrameHeader zfh;
4127+
size_t const s = ZSTD_getFrameHeader(&zfh, skippableFrame, skippableFrameSize);
4128+
CHECK_Z(s);
4129+
CHECK(s == 0); /* success */
4130+
CHECK(zfh.frameType == ZSTD_skippableFrame);
4131+
CHECK(zfh.headerSize == ZSTD_SKIPPABLEHEADERSIZE);
4132+
CHECK(zfh.dictID == 2); /* magic variant */
4133+
assert(skippableFrameSize >= ZSTD_SKIPPABLEHEADERSIZE);
4134+
CHECK(zfh.frameContentSize == skippableFrameSize - ZSTD_SKIPPABLEHEADERSIZE);
4135+
}
41234136
DISPLAYLEVEL(3, "OK \n");
41244137
}
41254138

@@ -4140,8 +4153,8 @@ static int basicUnitTests(U32 const seed, double compressibility)
41404153
ZSTD_CCtx* const cctx = ZSTD_createCCtx();
41414154
ZSTD_CDict* const lgCDict = ZSTD_createCDict(CNBuffer, size, 1);
41424155
ZSTD_CDict* const smCDict = ZSTD_createCDict(CNBuffer, 1 KB, 1);
4143-
ZSTD_frameHeader lgHeader;
4144-
ZSTD_frameHeader smHeader;
4156+
ZSTD_FrameHeader lgHeader;
4157+
ZSTD_FrameHeader smHeader;
41454158

41464159
CHECK_Z(ZSTD_compress_usingCDict(cctx, compressedBuffer, compressedBufferSize, CNBuffer, size, lgCDict));
41474160
CHECK_Z(ZSTD_getFrameHeader(&lgHeader, compressedBuffer, compressedBufferSize));
@@ -4760,7 +4773,7 @@ static int fuzzerTests(U32 seed, unsigned nbTests, unsigned startTest, U32 const
47604773
} }
47614774

47624775
/* frame header decompression test */
4763-
{ ZSTD_frameHeader zfh;
4776+
{ ZSTD_FrameHeader zfh;
47644777
CHECK_Z( ZSTD_getFrameHeader(&zfh, cBuffer, cSize) );
47654778
CHECK(zfh.frameContentSize != sampleSize, "Frame content size incorrect");
47664779
}
@@ -4902,7 +4915,7 @@ static int fuzzerTests(U32 seed, unsigned nbTests, unsigned startTest, U32 const
49024915
/* streaming decompression test */
49034916
DISPLAYLEVEL(5, "fuzzer t%u: Bufferless streaming decompression test \n", testNb);
49044917
/* ensure memory requirement is good enough (should always be true) */
4905-
{ ZSTD_frameHeader zfh;
4918+
{ ZSTD_FrameHeader zfh;
49064919
CHECK( ZSTD_getFrameHeader(&zfh, cBuffer, ZSTD_FRAMEHEADERSIZE_MAX),
49074920
"ZSTD_getFrameHeader(): error retrieving frame information");
49084921
{ size_t const roundBuffSize = ZSTD_decodingBufferSize_min(zfh.windowSize, zfh.frameContentSize);

tests/zstreamtest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ static int basicUnitTests(U32 seed, double compressibility, int bigTests)
436436

437437
/* context size functions */
438438
DISPLAYLEVEL(3, "test%3i : estimate DStream size : ", testNb++);
439-
{ ZSTD_frameHeader fhi;
439+
{ ZSTD_FrameHeader fhi;
440440
const void* cStart = (char*)compressedBuffer + (skippableFrameSize + 8);
441441
size_t const gfhError = ZSTD_getFrameHeader(&fhi, cStart, cSize);
442442
if (gfhError!=0) goto _output_error;
@@ -1530,7 +1530,7 @@ static int basicUnitTests(U32 seed, double compressibility, int bigTests)
15301530

15311531
DISPLAYLEVEL(3, "test%3i : decompress large frame created from multiple threads + dictionary : ", testNb++);
15321532
{ ZSTD_DStream* const dstream = ZSTD_createDCtx();
1533-
ZSTD_frameHeader zfh;
1533+
ZSTD_FrameHeader zfh;
15341534
ZSTD_getFrameHeader(&zfh, compressedBuffer, cSize);
15351535
DISPLAYLEVEL(5, "frame windowsize = %u : ", (unsigned)zfh.windowSize);
15361536
outBuff.dst = decodedBuffer;

0 commit comments

Comments
 (0)