From: Michihiro NAKAJIMA Date: Mon, 21 Nov 2011 02:08:33 +0000 (-0500) Subject: Fix issue 199; improve robustness to corrupted ISO images. X-Git-Tag: v3.0.1b~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c451144c0a402671c91cf79b89dc0cf203dcda76;p=thirdparty%2Flibarchive.git Fix issue 199; improve robustness to corrupted ISO images. SVN-Revision: 3823 --- diff --git a/libarchive/archive_read_support_format_iso9660.c b/libarchive/archive_read_support_format_iso9660.c index a2ef9299a..247cdd7aa 100644 --- a/libarchive/archive_read_support_format_iso9660.c +++ b/libarchive/archive_read_support_format_iso9660.c @@ -305,6 +305,8 @@ struct file_info { struct file_info *first; struct file_info **last; } rede_files; + /* To check a ininity loop. */ + struct file_info *loop_by; }; struct heap_queue { @@ -2839,8 +2841,14 @@ rede_add_entry(struct file_info *file) struct file_info *re; re = file->parent; - while (re != NULL && !re->re) + while (re != NULL && !re->re) { + /* Sanity check to prevent a infinity loop + * cause by a currupted iso file. */ + if (re->loop_by == file) + return (-1); + re->loop_by = file; re = re->parent; + } if (re == NULL) return (-1);