Merge "[zip] Set all entry times before 1980 to 1980-01-01" into main am: 05a03698b7
Original change: https://android-review.googlesource.com/c/platform/build/+/2744613 Change-Id: I5435006901820b183b2530d4c178d864ded77296 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
cb4bb177bd
1 changed files with 15 additions and 6 deletions
|
@ -363,13 +363,22 @@ void ZipEntry::setModWhen(time_t when)
|
|||
struct tm tmResult;
|
||||
struct tm* ptm = localtime_r(&even, &tmResult);
|
||||
|
||||
int year;
|
||||
year = ptm->tm_year;
|
||||
if (year < 80)
|
||||
year = 80;
|
||||
// The earliest valid time for ZIP file entries is 1980-01-01. See:
|
||||
// https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html.
|
||||
// Set any time before 1980 to 1980-01-01.
|
||||
if (ptm->tm_year < 80) {
|
||||
ptm->tm_year = 80;
|
||||
ptm->tm_mon = 0;
|
||||
ptm->tm_mday = 1;
|
||||
ptm->tm_hour = 0;
|
||||
ptm->tm_min = 0;
|
||||
ptm->tm_sec = 0;
|
||||
}
|
||||
|
||||
uint16_t zdate = (year - 80) << 9 | (ptm->tm_mon+1) << 5 | ptm->tm_mday;
|
||||
uint16_t ztime = ptm->tm_hour << 11 | ptm->tm_min << 5 | ptm->tm_sec >> 1;
|
||||
uint16_t zdate = static_cast<uint16_t>(
|
||||
(ptm->tm_year - 80) << 9 | (ptm->tm_mon + 1) << 5 | ptm->tm_mday);
|
||||
uint16_t ztime = static_cast<uint16_t>(
|
||||
ptm->tm_hour << 11 | ptm->tm_min << 5 | ptm->tm_sec >> 1);
|
||||
|
||||
mCDE.mLastModFileTime = mLFH.mLastModFileTime = ztime;
|
||||
mCDE.mLastModFileDate = mLFH.mLastModFileDate = zdate;
|
||||
|
|
Loading…
Reference in a new issue