From 2e09215948493b8a27f556f367964677ab5d0d1c Mon Sep 17 00:00:00 2001 From: kientzle Date: Thu, 5 Mar 2009 18:38:36 +0000 Subject: Merge r389 from libarchive.googlecode.com: Fix a memory leak in ISO9660 handler structure whenever a file entry has a nonsensical CE offset. --- lib/libarchive/archive_read_support_format_iso9660.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); -- cgit v1.1