Răsfoiți Sursa

Merge pull request #1890 from pbiering/fix-1851-1888

Fix: out-of-range timestamp on 32-bit systems
Peter Bieringer 5 luni în urmă
părinte
comite
d1f262b8cd
2 a modificat fișierele cu 2 adăugiri și 4 ștergeri
  1. 1 0
      CHANGELOG.md
  2. 1 4
      radicale/utils.py

+ 1 - 0
CHANGELOG.md

@@ -2,6 +2,7 @@
 
 ## 3.5.8.dev
 * Extend [auth]: re-factor & overhaul LDPA autrhentication, especially for Python's ldap module
+* Fix: out-of-range timestamp on 32-bit systems
 
 ## 3.5.7
 * Extend: [auth] dovecot: add support for version >= 2.4

+ 1 - 4
radicale/utils.py

@@ -280,10 +280,7 @@ def format_ut(unixtime: int) -> str:
         # TODO check how to support this better
         return str(unixtime)
     if unixtime < DATETIME_MAX_UNIXTIME:
-        if sys.version_info < (3, 11):
-            dt = datetime.datetime.utcfromtimestamp(unixtime)
-        else:
-            dt = datetime.datetime.fromtimestamp(unixtime, datetime.UTC)
+        dt = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc) + datetime.timedelta(seconds=unixtime)
         r = str(unixtime) + "(" + dt.strftime('%Y-%m-%dT%H:%M:%SZ') + ")"
     else:
         r = str(unixtime) + "(>MAX:" + str(DATETIME_MAX_UNIXTIME) + ")"