Commit f4499c0a authored by Victor Stinner's avatar Victor Stinner

Issue #5537: Fix time2isoz() and time2netscape() functions of httplib.cookiejar

for expiration year greater than 2038 on 32-bit systems.
parent 2b84ace8
...@@ -29,6 +29,7 @@ __all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy', ...@@ -29,6 +29,7 @@ __all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar'] 'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar']
import copy import copy
import datetime
import re import re
import time import time
import urllib.parse, urllib.request import urllib.parse, urllib.request
...@@ -97,10 +98,12 @@ def time2isoz(t=None): ...@@ -97,10 +98,12 @@ def time2isoz(t=None):
1994-11-24 08:49:37Z 1994-11-24 08:49:37Z
""" """
if t is None: t = time.time() if t is None:
year, mon, mday, hour, min, sec = time.gmtime(t)[:6] dt = datetime.datetime.utcnow()
else:
dt = datetime.datetime.utcfromtimestamp(t)
return "%04d-%02d-%02d %02d:%02d:%02dZ" % ( return "%04d-%02d-%02d %02d:%02d:%02dZ" % (
year, mon, mday, hour, min, sec) dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
def time2netscape(t=None): def time2netscape(t=None):
"""Return a string representing time in seconds since epoch, t. """Return a string representing time in seconds since epoch, t.
...@@ -113,10 +116,13 @@ def time2netscape(t=None): ...@@ -113,10 +116,13 @@ def time2netscape(t=None):
Wed, DD-Mon-YYYY HH:MM:SS GMT Wed, DD-Mon-YYYY HH:MM:SS GMT
""" """
if t is None: t = time.time() if t is None:
year, mon, mday, hour, min, sec, wday = time.gmtime(t)[:7] dt = datetime.datetime.utcnow()
else:
dt = datetime.datetime.utcfromtimestamp(t)
return "%s %02d-%s-%04d %02d:%02d:%02d GMT" % ( return "%s %02d-%s-%04d %02d:%02d:%02d GMT" % (
DAYS[wday], mday, MONTHS[mon-1], year, hour, min, sec) DAYS[dt.weekday()], dt.day, MONTHS[dt.month-1],
dt.year, dt.hour, dt.minute, dt.second)
UTC_ZONES = {"GMT": None, "UTC": None, "UT": None, "Z": None} UTC_ZONES = {"GMT": None, "UTC": None, "UT": None, "Z": None}
......
...@@ -40,6 +40,9 @@ Core and Builtins ...@@ -40,6 +40,9 @@ Core and Builtins
Library Library
------- -------
- Issue #5537: Fix time2isoz() and time2netscape() functions of
httplib.cookiejar for expiration year greater than 2038 on 32-bit systems.
- Issue #11459: A ``bufsize`` value of 0 in subprocess.Popen() really creates - Issue #11459: A ``bufsize`` value of 0 in subprocess.Popen() really creates
unbuffered pipes, such that select() works properly on them. unbuffered pipes, such that select() works properly on them.
...@@ -64,7 +67,7 @@ Library ...@@ -64,7 +67,7 @@ Library
- Issue #11491: dbm.error is no longer raised when dbm.open is called with - Issue #11491: dbm.error is no longer raised when dbm.open is called with
the "n" as the flag argument and the file exists. The behavior matches the "n" as the flag argument and the file exists. The behavior matches
the documentation and general logic. the documentation and general logic.
- Issue #11131: Fix sign of zero in decimal.Decimal plus and minus - Issue #11131: Fix sign of zero in decimal.Decimal plus and minus
operations when the rounding mode is ROUND_FLOOR. operations when the rounding mode is ROUND_FLOOR.
...@@ -218,8 +221,8 @@ Library ...@@ -218,8 +221,8 @@ Library
OSError exception when The OS had been told to ignore SIGCLD in our process OSError exception when The OS had been told to ignore SIGCLD in our process
or otherwise not wait for exiting child processes. or otherwise not wait for exiting child processes.
- Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified - Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified
IP addresses in the proxy exception list. IP addresses in the proxy exception list.
Extensions Extensions
---------- ----------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment