From 27031f73be12071625c93ab231eb0235b74b2c04 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 25 May 2026 11:08:19 +0000 Subject: [PATCH] clamp lastmod to y6325 (closes #1470); fromtimestamp fails on year>9999 --- bin/u2c.py | 7 ++++--- copyparty/httpcli.py | 2 +- copyparty/up2k.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bin/u2c.py b/bin/u2c.py index f0e3f8de..a6a564a1 100755 --- a/bin/u2c.py +++ b/bin/u2c.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 from __future__ import print_function, unicode_literals -S_VERSION = "2.20" -S_BUILD_DT = "2026-04-22" +S_VERSION = "2.21" +S_BUILD_DT = "2026-05-25" """ u2c.py: upload to copyparty @@ -1311,7 +1311,8 @@ class Ctl(object): if self.ar.jw: print("%s %s" % (wark, vp)) else: - zd = datetime.datetime.fromtimestamp(max(0, file.lmod), UTC) + tsdt = datetime.datetime.fromtimestamp + zd = tsdt(max(0, min(2 << 36, file.lmod)), UTC) dt = "%04d-%02d-%02d %02d:%02d:%02d" % ( zd.year, zd.month, diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index e4cd6a36..682721ec 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -7238,7 +7238,7 @@ class HttpCli(object): margin = "-" sz = inf.st_size - zd = datetime.fromtimestamp(max(0, linf.st_mtime), UTC) + zd = datetime.fromtimestamp(max(0, min(2 << 36, linf.st_mtime)), UTC) dt = "%04d-%02d-%02d %02d:%02d:%02d" % ( zd.year, zd.month, diff --git a/copyparty/up2k.py b/copyparty/up2k.py index ff1ba97d..957cbc72 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -3077,7 +3077,7 @@ class Up2k(object): ) zi = cj["lmod"] - bad_mt = zi <= 0 or zi > 0xAAAAAAAA + bad_mt = zi <= 0 or zi > (2 << 36) if bad_mt or vfs.flags.get("up_ts", "") == "fu": # force upload time rather than last-modified cj["lmod"] = int(time.time())