From: Michihiro NAKAJIMA Date: Sun, 18 Dec 2011 22:05:26 +0000 (-0500) Subject: Fix reading times in 7-Zip archives when the time data is not of all files. X-Git-Tag: v3.0.2~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b34fca43d71991a26dad1aee968a0416c8a71dc;p=thirdparty%2Flibarchive.git Fix reading times in 7-Zip archives when the time data is not of all files. SVN-Revision: 3939 --- diff --git a/libarchive/archive_read_support_format_7zip.c b/libarchive/archive_read_support_format_7zip.c index 48883db07..0378e91c7 100644 --- a/libarchive/archive_read_support_format_7zip.c +++ b/libarchive/archive_read_support_format_7zip.c @@ -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;