]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix intermittent segfault when reading zip files
authorPaul Barker <paul@paulbarker.me.uk>
Sun, 6 Apr 2014 21:54:48 +0000 (22:54 +0100)
committerPaul Barker <paul@paulbarker.me.uk>
Sun, 6 Apr 2014 21:58:55 +0000 (22:58 +0100)
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 <paul@paulbarker.me.uk>
libarchive/archive_read_support_format_zip.c

index 4460b304bcdfdcf9f45aebbc6a9c7cc0f615c49d..ab3c71e2e817a1b864678d8636d8278071080b47 100644 (file)
@@ -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 "??";
 }