diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libarchive/archive_read_support_format_iso9660.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/libarchive/archive_read_support_format_iso9660.c b/lib/libarchive/archive_read_support_format_iso9660.c index ab96a27..c124c71 100644 --- a/lib/libarchive/archive_read_support_format_iso9660.c +++ b/lib/libarchive/archive_read_support_format_iso9660.c @@ -414,8 +414,10 @@ archive_read_format_iso9660_read_header(struct archive_read *a, /* Get the next entry that appears after the current offset. */ r = next_entry_seek(a, iso9660, &file); - if (r != ARCHIVE_OK) + if (r != ARCHIVE_OK) { + release_file(iso9660, file); return (r); + } iso9660->entry_bytes_remaining = file->size; iso9660->entry_sparse_offset = 0; /* Offset for sparse-file-aware clients. */ @@ -1093,6 +1095,9 @@ release_file(struct iso9660 *iso9660, struct file_info *file) { struct file_info *parent; + if (file == NULL) + return; + if (file->refcount == 0) { parent = file->parent; archive_string_free(&file->name); |