https://bugs.mageia.org/show_bug.cgi?id=3941 http://svnweb.mageia.org/packages/updates/1/libarchive/current/SOURCES/libarchive-CVE-2011-1777.diff?revision=189404&view=co --- libarchive/archive_read_support_format_iso9660.c 2012-04-14 06:47:32.000000000 +0000 +++ libarchive/archive_read_support_format_iso9660.c.oden 2012-04-14 06:47:52.000000000 +0000 @@ -967,11 +967,11 @@ read_children(struct archive_read *a, st child = parse_file_info(a, parent, p); if (child == NULL) return (ARCHIVE_FATAL); - if (child->cl_offset) + if (child->cl_offset) { if (heap_add_entry(a, &(iso9660->cl_files), child, child->cl_offset) != ARCHIVE_OK) return (ARCHIVE_FATAL); - else { + } else { if (child->multi_extent || multi != NULL) { struct content *con; @@ -1070,11 +1070,11 @@ read_entries(struct archive_read *a) (strcmp(file->name.s, "rr_moved") == 0 || strcmp(file->name.s, ".rr_moved") == 0)) { iso9660->rr_moved = file; - } else if (file->re) + } else if (file->re) { if (heap_add_entry(a, &(iso9660->re_dirs), file, file->offset) != ARCHIVE_OK) return (ARCHIVE_FATAL); - else + } else cache_add_entry(iso9660, file); } if (file != NULL) @@ -2676,7 +2676,7 @@ heap_add_entry(struct archive_read *a, s parent_key = heap->files[parent]->key; if (file_key >= parent_key) { heap->files[hole] = file; - return; + return (ARCHIVE_OK); } // Move parent into hole <==> move hole up tree. heap->files[hole] = heap->files[parent];