ensure lz4f_cctx internal buffer size remain valid in case of malloc error
authorYann Collet <cyan@fb.com>
Sun, 9 Apr 2017 08:11:39 +0000 (01:11 -0700)
committerYann Collet <cyan@fb.com>
Sun, 9 Apr 2017 08:11:39 +0000 (01:11 -0700)
lib/lz4frame.c

index 7c1b8fd..fc0c7b5 100644 (file)
@@ -445,10 +445,11 @@ size_t LZ4F_compressBegin(LZ4F_cctx* cctxPtr, void* dstBuffer, size_t dstCapacit
         requiredBuffSize = (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 64 KB;   /* just needs dict */
 
     if (cctxPtr->maxBufferSize < requiredBuffSize) {
-        cctxPtr->maxBufferSize = requiredBuffSize;
+        cctxPtr->maxBufferSize = 0;
         FREEMEM(cctxPtr->tmpBuff);
         cctxPtr->tmpBuff = (BYTE*)ALLOCATOR(requiredBuffSize);
         if (cctxPtr->tmpBuff == NULL) return err0r(LZ4F_ERROR_allocation_failed);
+        cctxPtr->maxBufferSize = requiredBuffSize;
     }
     cctxPtr->tmpIn = cctxPtr->tmpBuff;
     cctxPtr->tmpInSize = 0;