]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Fix ubsan failures (pass NULL to memcpy) 417/head
authorNick Terrell <terrelln@fb.com>
Thu, 13 Oct 2016 03:54:42 +0000 (20:54 -0700)
committerNick Terrell <terrelln@fb.com>
Thu, 13 Oct 2016 03:54:42 +0000 (20:54 -0700)
lib/compress/zstd_compress.c
lib/decompress/zstd_decompress.c

index 94f4b5a25863991093b1767f4d861599b2b3cd9b..e53ecc5fdd2d4235e4ac5dd0cc340f3f26647326 100644 (file)
@@ -2235,7 +2235,7 @@ static size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
     BYTE* op = ostart;
     U32 const maxDist = 1 << cctx->params.cParams.windowLog;
 
-    if (cctx->params.fParams.checksumFlag)
+    if (cctx->params.fParams.checksumFlag && srcSize)
         XXH64_update(&cctx->xxhState, src, srcSize);
 
     while (remaining) {
@@ -2688,7 +2688,9 @@ ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictSize, ZSTD_pa
             return NULL;
         }
 
-        memcpy(dictContent, dict, dictSize);
+        if (dictSize) {
+            memcpy(dictContent, dict, dictSize);
+        }
         {   size_t const errorCode = ZSTD_compressBegin_advanced(cctx, dictContent, dictSize, params, 0);
             if (ZSTD_isError(errorCode)) {
                 ZSTD_free(dictContent, customMem);
index d157e0051800ca94b32616e5c82e9a7d1c98ec16..bb4336ff2a3380a12c6941d692a2174aa83a78b5 100644 (file)
@@ -1402,7 +1402,9 @@ ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, ZSTD_cu
             return NULL;
         }
 
-        memcpy(dictContent, dict, dictSize);
+        if (dictSize) {
+            memcpy(dictContent, dict, dictSize);
+        }
         {   size_t const errorCode = ZSTD_decompressBegin_usingDict(dctx, dictContent, dictSize);
             if (ZSTD_isError(errorCode)) {
                 ZSTD_free(dictContent, customMem);