From 07fe09e2279b9479f303b14dc98dc93e43ff7414 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Sun, 10 Aug 2008 02:06:28 +0000 Subject: [PATCH] MfP4: Joerg Sonnenberger's fixes to make 'ar' and 'pax' writers robust against multiple calls to their destroy() functions. --- lib/libarchive/archive_write_set_format_ar.c | 3 +++ lib/libarchive/archive_write_set_format_pax.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lib/libarchive/archive_write_set_format_ar.c b/lib/libarchive/archive_write_set_format_ar.c index e6a9d905b72..453cf3cddb2 100644 --- a/lib/libarchive/archive_write_set_format_ar.c +++ b/lib/libarchive/archive_write_set_format_ar.c @@ -389,6 +389,9 @@ archive_write_ar_destroy(struct archive_write *a) ar = (struct ar_w *)a->format_data; + if (ar == NULL) + return (ARCHIVE_OK); + if (ar->has_strtab > 0) { free(ar->strtab); ar->strtab = NULL; diff --git a/lib/libarchive/archive_write_set_format_pax.c b/lib/libarchive/archive_write_set_format_pax.c index b40aec54687..001e0a2db36 100644 --- a/lib/libarchive/archive_write_set_format_pax.c +++ b/lib/libarchive/archive_write_set_format_pax.c @@ -1200,6 +1200,9 @@ archive_write_pax_destroy(struct archive_write *a) struct pax *pax; pax = (struct pax *)a->format_data; + if (pax == NULL) + return (ARCHIVE_OK); + archive_string_free(&pax->pax_header); free(pax); a->format_data = NULL;