]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
DStream : ensure correct size of internal buffers in case of error
authorYann Collet <cyan@fb.com>
Wed, 5 Apr 2017 22:28:56 +0000 (15:28 -0700)
committerYann Collet <cyan@fb.com>
Wed, 5 Apr 2017 22:28:56 +0000 (15:28 -0700)
lib/decompress/zstd_decompress.c

index 06337dbd546331097da1ee0825762f665bf9298c..7499b8ae1acf3c4e32fc8def20dd3a0dea3f8eef 100644 (file)
@@ -2380,15 +2380,17 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                 zds->blockSize = blockSize;
                 if (zds->inBuffSize < blockSize) {
                     ZSTD_free(zds->inBuff, zds->customMem);
-                    zds->inBuffSize = blockSize;
+                    zds->inBuffSize = 0;
                     zds->inBuff = (char*)ZSTD_malloc(blockSize, zds->customMem);
                     if (zds->inBuff == NULL) return ERROR(memory_allocation);
+                    zds->inBuffSize = blockSize;
                 }
                 if (zds->outBuffSize < neededOutSize) {
                     ZSTD_free(zds->outBuff, zds->customMem);
-                    zds->outBuffSize = neededOutSize;
+                    zds->outBuffSize = 0;
                     zds->outBuff = (char*)ZSTD_malloc(neededOutSize, zds->customMem);
                     if (zds->outBuff == NULL) return ERROR(memory_allocation);
+                    zds->outBuffSize = neededOutSize;
             }   }
             zds->stage = zdss_read;
             /* pass-through */