]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix reading times in 7-Zip archives when the time data is not of all files.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 18 Dec 2011 22:05:26 +0000 (17:05 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 18 Dec 2011 22:05:26 +0000 (17:05 -0500)
SVN-Revision: 3939

libarchive/archive_read_support_format_7zip.c

index 48883db07f0fd85fe703360bf0bda1c9ee7de5a9..0378e91c752bf93dc64a34ba370ff0052d095558 100644 (file)
@@ -2620,29 +2620,29 @@ read_Times(struct _7zip *zip, struct _7z_header_info *h, int type,
        }
 
        for (i = 0; i < zip->numFiles; i++) {
+               if (!timeBools[i])
+                       continue;
                if (len < 8)
                        goto failed;
-               if (timeBools[i]) {
-                       switch (type) {
-                       case kCTime:
-                               fileTimeToUtc(archive_le64dec(p),
-                                   &(entries[i].ctime),
-                                   &(entries[i].ctime_ns));
-                               entries[i].flg |= CTIME_IS_SET;
-                               break;
-                       case kATime:
-                               fileTimeToUtc(archive_le64dec(p),
-                                   &(entries[i].atime),
-                                   &(entries[i].atime_ns));
-                               entries[i].flg |= ATIME_IS_SET;
-                               break;
-                       case kMTime:
-                               fileTimeToUtc(archive_le64dec(p),
-                                   &(entries[i].mtime),
-                                   &(entries[i].mtime_ns));
-                               entries[i].flg |= MTIME_IS_SET;
-                               break;
-                       }
+               switch (type) {
+               case kCTime:
+                       fileTimeToUtc(archive_le64dec(p),
+                           &(entries[i].ctime),
+                           &(entries[i].ctime_ns));
+                       entries[i].flg |= CTIME_IS_SET;
+                       break;
+               case kATime:
+                       fileTimeToUtc(archive_le64dec(p),
+                           &(entries[i].atime),
+                           &(entries[i].atime_ns));
+                       entries[i].flg |= ATIME_IS_SET;
+                       break;
+               case kMTime:
+                       fileTimeToUtc(archive_le64dec(p),
+                           &(entries[i].mtime),
+                           &(entries[i].mtime_ns));
+                       entries[i].flg |= MTIME_IS_SET;
+                       break;
                }
                p += 8;
                len -= 8;