]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
strengthen compilation flags
authorYann Collet <cyan@fb.com>
Tue, 2 Mar 2021 23:43:52 +0000 (15:43 -0800)
committerYann Collet <cyan@fb.com>
Tue, 2 Mar 2021 23:43:52 +0000 (15:43 -0800)
contrib/seekable_format/tests/Makefile
contrib/seekable_format/tests/seekable_tests.c
contrib/seekable_format/zstd_seekable.h
contrib/seekable_format/zstdseek_decompress.c
lib/common/mem.h

index b00657f80ad073636b85bdc43d20d534b9e7fe9e..707d04d551cc4b1d9c8608daea78f3040ff660a3 100644 (file)
@@ -16,7 +16,8 @@ ZSTDLIB = $(ZSTDLIB_PATH)/$(ZSTDLIB_NAME)
 CPPFLAGS += -I../ -I$(ZSTDLIB_PATH) -I$(ZSTDLIB_PATH)/common
 
 CFLAGS ?= -O3
-CFLAGS += -g
+CFLAGS += -g -Wall -Wextra -Wcast-qual -Wcast-align -Wconversion \
+          -Wformat=2 -Wstrict-aliasing=1
 
 SEEKABLE_OBJS = ../zstdseek_compress.c ../zstdseek_decompress.c $(ZSTDLIB)
 
@@ -33,6 +34,6 @@ $(ZSTDLIB):
 seekable_tests : seekable_tests.c $(SEEKABLE_OBJS)
 
 clean:
-       @rm -f core *.o tmp* result* *.zst \
+       @$(RM) core *.o tmp* result* *.zst \
                seekable_tests
        @echo Cleaning completed
index f2556b5180b9f6f8a83c1ef6ebf4337073234b7d..e9911c0846580b45d24356782d3aba524bb95b06 100644 (file)
@@ -8,6 +8,7 @@
 int main(int argc, const char** argv)
 {
     unsigned testNb = 1;
+    (void)argc; (void)argv;
     printf("Beginning zstd seekable format tests...\n");
     printf("Test %u - check that seekable decompress does not hang: ", testNb++);
     {   /* Github issue #2335 */
index bf0118a346290b09c0494bc4f48ccfd63bed220e..b7e2d82da4a196da6dd87fb2767e29ebd392130b 100644 (file)
@@ -173,7 +173,7 @@ ZSTDLIB_API unsigned ZSTD_seekable_offsetToFrameIndex(const ZSTD_seekable* zs, u
 
 
 /*===== Independent seek table management =====*/
-ZSTDLIB_API size_t ZSTD_seekable_copySeekTable(ZSTD_seekable* zs, ZSTD_seekTable** out);
+ZSTDLIB_API ZSTD_seekTable* ZSTD_seekTable_create_fromSeekable(const ZSTD_seekable* zs);
 ZSTDLIB_API size_t ZSTD_seekTable_free(ZSTD_seekTable* st);
 
 /*===== Direct seek table access functions =====*/
index 5315e6c3614548c4dcf1eeace347a0b859245e84..cf9e3dad5e09fe7c083b93af3d7674398b1d4fe6 100644 (file)
@@ -118,15 +118,16 @@ static int ZSTD_seekable_seek_buff(void* opaque, long long offset, int origin)
 {
     buffWrapper_t* const buff = (buffWrapper_t*) opaque;
     unsigned long long newOffset;
+    assert(offset >= 0);
     switch (origin) {
     case SEEK_SET:
-        newOffset = offset;
+        newOffset = (unsigned long long)offset;
         break;
     case SEEK_CUR:
-        newOffset = (unsigned long long)buff->pos + offset;
+        newOffset = (unsigned long long)buff->pos + (unsigned long long)offset;
         break;
     case SEEK_END:
-        newOffset = (unsigned long long)buff->size + offset;
+        newOffset = (unsigned long long)buff->size + (unsigned long long)offset;
         break;
     default:
         assert(0);  /* not possible */
@@ -198,10 +199,10 @@ size_t ZSTD_seekable_free(ZSTD_seekable* zs)
     return 0;
 }
 
-size_t ZSTD_seekable_copySeekTable(ZSTD_seekable* zs, ZSTD_seekTable** out)
+ZSTD_seekTable* ZSTD_seekTable_create_fromSeekable(const ZSTD_seekable* zs)
 {
     ZSTD_seekTable* const st = malloc(sizeof(ZSTD_seekTable));
-    if (st==NULL) return ERROR(memory_allocation);
+    if (st==NULL) return NULL;
 
     st->checksumFlag = zs->seekTable.checksumFlag;
     st->tableLen = zs->seekTable.tableLen;
@@ -211,14 +212,12 @@ size_t ZSTD_seekable_copySeekTable(ZSTD_seekable* zs, ZSTD_seekTable** out)
     seekEntry_t* const entries = (seekEntry_t*)malloc(entriesSize);
     if (entries==NULL) {
         free(st);
-        return ERROR(memory_allocation);
+        return NULL;
     }
 
     memcpy(entries, zs->seekTable.entries, entriesSize);
     st->entries = entries;
-
-    *out = st;
-    return 0;
+    return st;
 }
 
 size_t ZSTD_seekTable_free(ZSTD_seekTable* st)
@@ -449,8 +448,9 @@ size_t ZSTD_seekable_decompress(ZSTD_seekable* zs, void* dst, size_t len, unsign
             zs->decompressedOffset = zs->seekTable.entries[targetFrame].dOffset;
             zs->curFrame = targetFrame;
 
+            assert(zs->seekTable.entries[targetFrame].cOffset < LLONG_MAX);
             CHECK_IO(zs->src.seek(zs->src.opaque,
-                                  zs->seekTable.entries[targetFrame].cOffset,
+                                  (long long)zs->seekTable.entries[targetFrame].cOffset,
                                   SEEK_SET));
             zs->in = (ZSTD_inBuffer){zs->inBuff, 0, 0};
             XXH64_reset(&zs->xxhState, 0);
index 9813bfc4235235434125fe3021b470d217a8d45a..961f89849dc6bad7c3155f39c7305785ea877163 100644 (file)
@@ -308,7 +308,7 @@ MEM_STATIC void MEM_writeLE16(void* memPtr, U16 val)
 
 MEM_STATIC U32 MEM_readLE24(const void* memPtr)
 {
-    return MEM_readLE16(memPtr) + (((const BYTE*)memPtr)[2] << 16);
+    return (U32)MEM_readLE16(memPtr) + ((U32)(((const BYTE*)memPtr)[2]) << 16);
 }
 
 MEM_STATIC void MEM_writeLE24(void* memPtr, U32 val)