diff options
author | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2012-12-02 21:08:39 +0900 |
---|---|---|
committer | Michihiro NAKAJIMA <ggcueroad@gmail.com> | 2012-12-02 21:08:39 +0900 |
commit | 1c7d5f303513af975bbc4343de4f774d3bcd3aee (patch) | |
tree | b265ca54c8e1bb9237958db4e5b8e2b62c149b2d /libarchive/archive_write_set_format_pax.c | |
parent | 3bfbc9948d5ba7bb691e254ba530c682b530e630 (diff) | |
download | libarchive-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.c | 5 |
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) |