Background:
As part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.
The usual offset is +16 years, because that is how long I expect some software will be used in some places.
This showed up failing tests in our package build.
You'll note that all the bad timestamps are in the chk dir, not in the main copy. The exclude.test script was doing a protocol-28 compatibility test at one point in the test sequence, and protocol-28 can only handle 4-byte modtime values (so the high-bit mtime value gets interpreted as a negative number). I removed the protocol override from this dir-time touchup call and that fixes the test failure:
Another change that would solve this issue when using an older protocol is to treat the arriving 4-byte mtime as unsigned. This would mean that the older protocol would not be able to convey a date prior to 1970 anymore, instead supporting upcoming dates through early 2106. I think this is probably a good compromise, given that (1) the older protocol is fairly rare (except on Apple), and (2) dates prior to 1970 are extremely rare (while newer dates are arriving in just 16 years). I'm considering this a bit more.
I went ahead and made the 4-byte modtime change to unsigned since I think that this will better serve users who get forced into an old-protocol transfer in the coming years. I verified that "make check29" works just fine when run using a system time of Sept 2038.
While working on reproducible builds for openSUSE, I found that our
rsyncpackage fails tests in 2038.Background:
As part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.
The usual offset is +16 years, because that is how long I expect some software will be used in some places.
This showed up failing tests in our package build.
The test log
The 1902 timestamps indicate that somewhere a 32-bit time_t (UNIX epoch) value overflowed, even on x86_64.
The text was updated successfully, but these errors were encountered: