]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
When the initial archive open for write fails, explicitly free filters.
authorJoerg Sonnenberger <joerg@bec.de>
Sat, 19 Oct 2019 15:15:05 +0000 (17:15 +0200)
committerJoerg Sonnenberger <joerg@bec.de>
Wed, 27 Nov 2019 20:35:31 +0000 (21:35 +0100)
This provides a defense-in-depth against programming errors due to the
partial state. Based on a report from Airbus Security - Vulnerability
Management.

libarchive/archive_write.c

index 9fa46bf5e3f841b9df62fccb3589f878b3334860..1c40e97697f0e03947b0bef06d5c9fe133ade4ca 100644 (file)
@@ -486,6 +486,7 @@ archive_write_open(struct archive *_a, void *client_data,
        ret = __archive_write_open_filter(a->filter_first);
        if (ret < ARCHIVE_WARN) {
                r1 = __archive_write_close_filter(a);
+               __archive_write_filters_free(_a);
                return (r1 < ret ? r1 : ret);
        }