diff options
Diffstat (limited to 'lib/libarchive/archive_read_support_format_cpio.c')
-rw-r--r-- | lib/libarchive/archive_read_support_format_cpio.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/libarchive/archive_read_support_format_cpio.c b/lib/libarchive/archive_read_support_format_cpio.c index 5ddc4f1..9abeeca 100644 --- a/lib/libarchive/archive_read_support_format_cpio.c +++ b/lib/libarchive/archive_read_support_format_cpio.c @@ -83,16 +83,21 @@ int archive_read_support_format_cpio(struct archive *a) { struct cpio *cpio; + int r; cpio = malloc(sizeof(*cpio)); memset(cpio, 0, sizeof(*cpio)); cpio->magic = CPIO_MAGIC; - return (__archive_read_register_format(a, + r = __archive_read_register_format(a, cpio, archive_read_format_cpio_bid, archive_read_format_cpio_read_header, - archive_read_format_cpio_cleanup)); + archive_read_format_cpio_cleanup); + + if (r != ARCHIVE_OK) + free(cpio); + return (ARCHIVE_OK); } |