]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Filter options need to be freed in all liblzma versions
authorMartin Matuska <martin@matuska.org>
Sun, 25 Dec 2016 02:02:57 +0000 (03:02 +0100)
committerMartin Matuska <martin@matuska.org>
Sun, 25 Dec 2016 02:04:10 +0000 (03:04 +0100)
This reverts commit 00f4bd830f6c2c83cf11f4f4f7db06b4b238cb71,
reversing changes made to 6070852668fe4881d1d308983f5c87153235feff.
This reverts commit b5ffcc0bd7f0f39102863d5c96ae91f02c74aaae.

Reported-By: OSS-Fuzz 232

libarchive/archive_read_support_filter_xz.c
libarchive/archive_read_support_format_7zip.c

index 63037a57a89b3e4a85c9290fdee7e35969e39f25..11807cf6768bb5c6e2c2b1189adc4ff804232afe 100644 (file)
@@ -584,9 +584,7 @@ lzip_init(struct archive_read_filter *self)
                return (ARCHIVE_FATAL);
        }
        ret = lzma_raw_decoder(&(state->stream), filters);
-#if LZMA_VERSION < 50010000
        free(filters[0].options);
-#endif
        if (ret != LZMA_OK) {
                set_error(self, ret);
                return (ARCHIVE_FATAL);
index 78b4bcc245c4a1a3a0e86c843a9b737dbb54df2a..f8d52fb71797816eb6b09412540ecd2c3c7ed44c 100644 (file)
@@ -1056,10 +1056,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
 #endif
        {
                lzma_options_delta delta_opt;
-               lzma_filter filters[LZMA_FILTERS_MAX];
-#if LZMA_VERSION < 50010000
-               lzma_filter *ff;
-#endif
+               lzma_filter filters[LZMA_FILTERS_MAX], *ff;
                int fi = 0;
 
                if (zip->lzstream_valid) {
@@ -1144,9 +1141,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                else
                        filters[fi].id = LZMA_FILTER_LZMA1;
                filters[fi].options = NULL;
-#if LZMA_VERSION < 50010000
                ff = &filters[fi];
-#endif
                r = lzma_properties_decode(&filters[fi], NULL,
                    coder1->properties, (size_t)coder1->propertiesSize);
                if (r != LZMA_OK) {
@@ -1158,9 +1153,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                filters[fi].id = LZMA_VLI_UNKNOWN;
                filters[fi].options = NULL;
                r = lzma_raw_decoder(&(zip->lzstream), filters);
-#if LZMA_VERSION < 50010000
                free(ff->options);
-#endif
                if (r != LZMA_OK) {
                        set_error(a, r);
                        return (ARCHIVE_FAILED);