A less complete version of this patch was fed back to the upstream community:
http://code.google.com/p/libarchive/issues/detail?id=285
This more complete patch was committed instead. It should no longer be
needed with the next release.
--- libarchive/libarchive/archive_write_set_format_pax.c.orig Mon Mar 26 19:49:00 2012
+++ libarchive/libarchive/archive_write_set_format_pax.c Sun Dec 2 04:03:38 2012
@@ -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)