fixed remaining ubsan warnings
authorYann Collet <yann.collet.73@gmail.com>
Mon, 9 Nov 2020 02:08:43 +0000 (18:08 -0800)
committerYann Collet <yann.collet.73@gmail.com>
Mon, 9 Nov 2020 02:08:43 +0000 (18:08 -0800)
lib/lz4.c
lib/lz4hc.c

index 427673eb4ec5513f88ab6a43442d8edaed75072b..b066c551d73a26228f1a70101ac4071849a64f05 100644 (file)
--- a/lib/lz4.c
+++ b/lib/lz4.c
@@ -1662,7 +1662,7 @@ int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize)
     if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; }
 
     if (safeBuffer == NULL) assert(dictSize == 0);
-    if (safeBuffer != NULL)
+    if (dictSize > 0)
         memmove(safeBuffer, previousDictEnd - dictSize, dictSize);
 
     dict->dictionary = (const BYTE*)safeBuffer;
index 8875f1af8c1110adb1a9ff62b7e618890a2cfc0a..286ff6856f6f86ad77862a0e6612fbf286cda3a6 100644 (file)
@@ -1164,13 +1164,16 @@ int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictS
     if (dictSize > 64 KB) dictSize = 64 KB;
     if (dictSize < 4) dictSize = 0;
     if (dictSize > prefixSize) dictSize = prefixSize;
-    memmove(safeBuffer, streamPtr->end - dictSize, dictSize);
+    if (safeBuffer == NULL) assert(dictSize == 0);
+    if (dictSize > 0)
+        memmove(safeBuffer, streamPtr->end - dictSize, dictSize);
     {   U32 const endIndex = (U32)(streamPtr->end - streamPtr->base);
         streamPtr->end = (const BYTE*)safeBuffer + dictSize;
         streamPtr->base = streamPtr->end - endIndex;
         streamPtr->dictLimit = endIndex - (U32)dictSize;
         streamPtr->lowLimit = endIndex - (U32)dictSize;
-        if (streamPtr->nextToUpdate < streamPtr->dictLimit) streamPtr->nextToUpdate = streamPtr->dictLimit;
+        if (streamPtr->nextToUpdate < streamPtr->dictLimit)
+            streamPtr->nextToUpdate = streamPtr->dictLimit;
     }
     return dictSize;
 }