From 3bd37337e6c299beb493ba7633042b9b5cae763c Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Sun, 6 Apr 2014 22:54:48 +0100 Subject: [PATCH] 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 --- libarchive/archive_read_support_format_zip.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 "??"; } -- 2.47.2