]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix memory leaks.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 27 Nov 2011 03:44:07 +0000 (22:44 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 27 Nov 2011 03:44:07 +0000 (22:44 -0500)
SVN-Revision: 3854

libarchive/archive_read_support_filter_xz.c
libarchive/archive_read_support_format_7zip.c

index b0062c714b664971c9c68f2a387160b1c15bb7b8..65fbf48ec70067b15167d810a6858c3af98051d1 100644 (file)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2009,2010 Michihiro NAKAJIMA
+ * Copyright (c) 2009-2011 Michihiro NAKAJIMA
  * Copyright (c) 2003-2008 Tim Kientzle and Miklos Vajna
  * All rights reserved.
  *
@@ -598,6 +598,7 @@ lzip_init(struct archive_read_filter *self)
                return (ARCHIVE_FATAL);
        }
        ret = lzma_raw_decoder(&(state->stream), filters);
+       free(filters[0].options);
        if (ret != LZMA_OK) {
                set_error(self, ret);
                return (ARCHIVE_FATAL);
index ed2aa635d67d49b5366bc7b0dacd9e7a3f3c17ef..cf7809675305ddd7bac8460a389706401aa44851 100644 (file)
@@ -695,7 +695,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
 #endif
        {
                lzma_options_delta delta_opt;
-               lzma_filter filters[LZMA_FILTERS_MAX];
+               lzma_filter filters[LZMA_FILTERS_MAX], *ff;
                int fi = 0;
 
                if (zip->lzstream_valid) {
@@ -761,6 +761,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                else
                        filters[fi].id = LZMA_FILTER_LZMA1;
                filters[fi].options = NULL;
+               ff = &filters[fi];
                r = lzma_properties_decode(&filters[fi], NULL,
                    folder->coders[0].properties,
                    folder->coders[0].propertiesSize);
@@ -773,6 +774,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);
+               free(ff->options);
                if (r != LZMA_OK) {
                        set_error(a, r);
                        return (ARCHIVE_FAILED);