]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix memory leaks in pax writer when handing mac metadata.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 2 Dec 2012 12:08:39 +0000 (21:08 +0900)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 2 Dec 2012 12:08:39 +0000 (21:08 +0900)
libarchive/archive_write_set_format_pax.c

index 754e5f96fe2e548fbe8ac63e7eab2ee70ed457e5..687f8e48a9b790c9b9944fb698440c2974a927cb 100644 (file)
@@ -647,8 +647,10 @@ archive_write_pax_header(struct archive_write *a,
                oname = archive_entry_pathname(entry_original);
                name_length = strlen(oname);
                name = malloc(name_length + 3);
-               if (name == NULL) {
+               if (name == NULL || extra == NULL) {
                        /* XXX error message */
+                       archive_entry_free(extra);
+                       free(name);
                        return (ARCHIVE_FAILED);
                }
                strcpy(name, oname);
@@ -687,6 +689,7 @@ archive_write_pax_header(struct archive_write *a,
 
                /* Recurse to write the special copyfile entry. */
                r = archive_write_pax_header(a, extra);
+               archive_entry_free(extra);
                if (r < ARCHIVE_WARN)
                        return (r);
                if (r < ret)