]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Merge recent changes from libarchive master repository.
authorTim Kientzle <kientzle@acm.org>
Wed, 25 Dec 2013 01:25:55 +0000 (17:25 -0800)
committerTim Kientzle <kientzle@acm.org>
Wed, 25 Dec 2013 01:25:55 +0000 (17:25 -0800)
1  2 
Makefile.am
libarchive/archive_read_support_format_zip.c
libarchive/test/CMakeLists.txt
libarchive/test/main.c

diff --cc Makefile.am
Simple merge
index bd01caa5ce639b1a14c34bd88e364a54c333b9f1,bd4ccdec81d6cc39013393a91b1ad3ea8ebbeb03..c83cfb2a499a233d6e2d708492b3c75e2afbe414
@@@ -1334,24 -1428,20 +1447,24 @@@ zip_read_data_none(struct archive_read 
                            "Truncated ZIP file data");
                        return (ARCHIVE_FATAL);
                }
 -              /* Check for a complete PK\007\010 signature. */
 +              /* Check for a complete PK\007\010 signature, followed
 +               * by the correct 4-byte CRC. */
                p = buff;
-               if (p[0] == 'P' && p[1] == 'K' 
+               if (p[0] == 'P' && p[1] == 'K'
                    && p[2] == '\007' && p[3] == '\010'
 -                  && archive_le32dec(p + 4) == zip->entry_crc32
 -                  && archive_le32dec(p + 8) ==
 -                          zip->entry_compressed_bytes_read
 -                  && archive_le32dec(p + 12) ==
 -                          zip->entry_uncompressed_bytes_read) {
 -                      zip->entry->crc32 = archive_le32dec(p + 4);
 -                      zip->entry->compressed_size = archive_le32dec(p + 8);
 -                      zip->entry->uncompressed_size = archive_le32dec(p + 12);
 +                  && archive_le32dec(p + 4) == zip->entry_crc32) {
 +                      if (zip->entry->have_zip64) {
 +                              zip->entry->crc32 = archive_le32dec(p + 4);
 +                              zip->entry->compressed_size = archive_le64dec(p + 8);
 +                              zip->entry->uncompressed_size = archive_le64dec(p + 16);
 +                              zip->unconsumed = 24;
 +                      } else {
 +                              zip->entry->crc32 = archive_le32dec(p + 4);
 +                              zip->entry->compressed_size = archive_le32dec(p + 8);
 +                              zip->entry->uncompressed_size = archive_le32dec(p + 12);
 +                              zip->unconsumed = 16;
 +                      }
                        zip->end_of_entry = 1;
 -                      zip->unconsumed = 16;
                        return (ARCHIVE_OK);
                }
                /* If not at EOF, ensure we consume at least one byte. */
Simple merge
Simple merge