]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix potential memory leaks found with Clang.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 7 Oct 2012 21:21:49 +0000 (06:21 +0900)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Mon, 8 Oct 2012 02:48:39 +0000 (11:48 +0900)
libarchive/archive_read_support_filter_program.c
libarchive/archive_write_add_filter_program.c

index 5b052d7cb671b423bdd41030c5766a2b6b41b164..344f5a989b88b8952a8f0671cf8b34eed5897880 100644 (file)
@@ -650,8 +650,10 @@ __archive_read_programv(struct archive_read_filter *self, const char *cmd,
            archive_string_ensure(&state->description, l) == NULL) {
                archive_set_error(&self->archive->archive, ENOMEM,
                    "Can't allocate input data");
-               archive_string_free(&state->description);
-               free(state);
+               if (state != NULL) {
+                       archive_string_free(&state->description);
+                       free(state);
+               }
                free(out_buf);
                return (ARCHIVE_FATAL);
        }
index 3dda6bae0b62a657d24e584bce7bd163e965820f..dc72d39b1faa14933a3b447b773135cf47b547b8 100644 (file)
@@ -226,6 +226,7 @@ write_add_filter_programv(struct archive *_a, const char *cmd,
        f->free = archive_compressor_program_free;
        return (ARCHIVE_OK);
 memerr:
+       free(data);
        archive_compressor_program_free(f);
        archive_set_error(_a, ENOMEM,
            "Can't allocate memory for filter program");