summaryrefslogtreecommitdiff
path: root/libarchive/archive_write_set_format_pax.c
diff options
context:
space:
mode:
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>2012-12-02 21:08:39 +0900
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>2012-12-02 21:08:39 +0900
commit1c7d5f303513af975bbc4343de4f774d3bcd3aee (patch)
treeb265ca54c8e1bb9237958db4e5b8e2b62c149b2d /libarchive/archive_write_set_format_pax.c
parent3bfbc9948d5ba7bb691e254ba530c682b530e630 (diff)
downloadlibarchive-1c7d5f303513af975bbc4343de4f774d3bcd3aee.tar.gz
Fix memory leaks in pax writer when handing mac metadata.
Diffstat (limited to 'libarchive/archive_write_set_format_pax.c')
-rw-r--r--libarchive/archive_write_set_format_pax.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libarchive/archive_write_set_format_pax.c b/libarchive/archive_write_set_format_pax.c
index 754e5f96..687f8e48 100644
--- a/libarchive/archive_write_set_format_pax.c
+++ b/libarchive/archive_write_set_format_pax.c
@@ -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)