]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fix zero offset to nullpointer errors
authorDanielle Rozenblit <drozenblit@fb.com>
Thu, 8 Sep 2022 00:52:26 +0000 (17:52 -0700)
committerDanielle Rozenblit <drozenblit@fb.com>
Thu, 8 Sep 2022 00:52:26 +0000 (17:52 -0700)
lib/decompress/zstd_decompress.c

index 5bd412df436664ce43ab716ad1cbc1793fe25015..ee08d84c36157c571da39faaf88434b3e5e100b4 100644 (file)
@@ -2059,7 +2059,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
                     if (ZSTD_isError(decompressedSize)) return decompressedSize;
                     DEBUGLOG(4, "shortcut to single-pass ZSTD_decompress_usingDDict()")
                     ip = istart + cSize;
-                    op += decompressedSize;
+                    if (op) {
+                        op += decompressedSize;
+                    }
                     zds->expected = 0;
                     zds->streamStage = zdss_init;
                     someMoreWork = 0;
@@ -2179,7 +2181,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
         case zdss_flush:
             {   size_t const toFlushSize = zds->outEnd - zds->outStart;
                 size_t const flushedSize = ZSTD_limitCopy(op, (size_t)(oend-op), zds->outBuff + zds->outStart, toFlushSize);
-                op += flushedSize;
+                if (op) {
+                    op += flushedSize;
+                }
                 zds->outStart += flushedSize;
                 if (flushedSize == toFlushSize) {  /* flush completed */
                     zds->streamStage = zdss_read;