]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed issues reported by Maciej Adamczyk
authorYann Collet <yann.collet.73@gmail.com>
Wed, 4 Nov 2015 19:35:33 +0000 (20:35 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Wed, 4 Nov 2015 19:35:33 +0000 (20:35 +0100)
lib/zstd.c
lib/zstd_internal.h
programs/zstdcli.c

index c7dcc262a386144bd8792952f4b0d12114440b09..db533f9a50d0e3c5198f7a36a74d54bd215e1f5c 100644 (file)
@@ -921,6 +921,7 @@ size_t ZSTD_decodeLiteralsBlock(void* ctx,
             {
                 if (litSize > srcSize-3) return ERROR(corruption_detected);
                 memcpy(dctx->litBuffer, istart, litSize);
+                dctx->litPtr = dctx->litBuffer;
                 dctx->litBufSize = BLOCKSIZE+8;
                 dctx->litSize = litSize;
                 return litSize+3;
index 207fd84bf35257188f745182d6cb0ac87a3072d6..f6363645946c306d136ff2cd17e69ec23e35c707 100644 (file)
@@ -171,7 +171,9 @@ static void ZSTD_wildcopy(void* dst, const void* src, size_t length)
     const BYTE* ip = (const BYTE*)src;
     BYTE* op = (BYTE*)dst;
     BYTE* const oend = op + length;
-    do COPY8(op, ip) while (op < oend);
+    do
+        COPY8(op, ip)
+    while (op < oend);
 }
 
 
index b22095983feb070071c129a8d4882e64682b6bc7..4c8460d8a2c0956308c889d6223ae9c80e662c31 100644 (file)
@@ -178,7 +178,7 @@ int main(int argc, char** argv)
     const char* inFileName = NULL;
     const char* outFileName = NULL;
     char* dynNameSpace = NULL;
-    char extension[] = ZSTD_EXTENSION;
+    const char extension[] = ZSTD_EXTENSION;
 
     displayOut = stderr;
     /* Pick out basename component. Don't rely on stdlib because of conflicting behavior. */
@@ -351,16 +351,17 @@ int main(int argc, char** argv)
         }
         /* decompression to file (automatic name will work only if input filename has correct format extension) */
         {
-            size_t outl;
-            size_t inl = strlen(inFileName);
-            dynNameSpace = (char*)calloc(1,inl+1);
+            size_t filenameSize = strlen(inFileName);
+            if (strcmp(inFileName + (filenameSize-4), extension))
+            {
+                 DISPLAYLEVEL(1, "unknown suffix - cannot determine destination filename\n");
+                 return badusage(programName);
+            }
+            dynNameSpace = (char*)calloc(1,filenameSize+1);
             if (dynNameSpace==NULL) { DISPLAY("not enough memory\n"); exit(1); }
             outFileName = dynNameSpace;
             strcpy(dynNameSpace, inFileName);
-            outl = inl;
-            if (inl>4)
-                while ((outl >= inl-4) && (inFileName[outl] ==  extension[outl-inl+4])) dynNameSpace[outl--]=0;
-            if (outl != inl-5) { DISPLAYLEVEL(1, "Cannot determine an output filename\n"); return badusage(programName); }
+            dynNameSpace[filenameSize-4]=0;
             DISPLAYLEVEL(2, "Decoding file %s \n", outFileName);
         }
     }