From: datauwu Date: Sat, 1 Aug 2026 18:57:01 +0000 (+0800) Subject: warc: test future date conversion X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=535360bfebfdb0ee8bb5030d88eaafa0e11edd20;p=thirdparty%2Flibarchive.git warc: test future date conversion Add a WARC date after 2038 to cover the fallback time conversion. On 64-bit time_t, it must parse as the expected Unix timestamp. --- diff --git a/libarchive/test/test_read_format_warc.c b/libarchive/test/test_read_format_warc.c index be14b88b1..3b08ceee8 100644 --- a/libarchive/test/test_read_format_warc.c +++ b/libarchive/test/test_read_format_warc.c @@ -202,3 +202,37 @@ DEFINE_TEST(test_read_format_warc_truncated_body) assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } + +DEFINE_TEST(test_read_format_warc_future_date) +{ + static const char warc[] = + "WARC/1.0\r\n" + "WARC-Type: resource\r\n" + "WARC-Date: 2039-01-01T00:00:00Z\r\n" + "WARC-Target-URI: file://test.txt\r\n" + "Content-Length: 0\r\n" + "\r\n" + "\r\n\r\n"; + struct archive_entry *ae; + struct archive *a; + + if (sizeof(time_t) < 8) { + skipping("This test requires a 64-bit time_t"); + return; + } + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, warc, sizeof(warc) - 1U)); + + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualInt(2177452800LL, archive_entry_mtime(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +}