From: Paul Barker Date: Sun, 6 Apr 2014 21:54:48 +0000 (+0100) Subject: Fix intermittent segfault when reading zip files X-Git-Tag: v3.1.900a~307^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bd37337e6c299beb493ba7633042b9b5cae763c;p=thirdparty%2Flibarchive.git Fix intermittent segfault when reading zip files When looking up the compression name for a zip file the index variable was being incremented too soon. Thus element zero ("uncompressed") was never checked and reads could be made past the end of the array. This was causing intermittent segfaults in the call to sprintf in zip_read_local_file_header. Signed-off-by: Paul Barker --- diff --git a/libarchive/archive_read_support_format_zip.c b/libarchive/archive_read_support_format_zip.c index 4460b304b..ab3c71e2e 100644 --- a/libarchive/archive_read_support_format_zip.c +++ b/libarchive/archive_read_support_format_zip.c @@ -204,10 +204,11 @@ compression_name(const int compression) { static const int num_compression_methods = sizeof(compression_methods)/sizeof(compression_methods[0]); int i=0; - while(compression >= 0 && i++ < num_compression_methods) { + while(compression >= 0 && i < num_compression_methods) { if (compression_methods[i].id == compression) { return compression_methods[i].name; } + i++; } return "??"; }