summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2018-08-25 01:08:50 (GMT)
committerGitHub <noreply@github.com>2018-08-25 01:08:50 (GMT)
commit76be0fffff8b7dbe649ad4821144461800ffb0d0 (patch)
tree9ef8e6646a08ddf8ae63a2600945b3c47f3ab79b /Lib/test
parenteb746dbae8b320758ee08f811316d7f283435cc0 (diff)
downloadcpython-76be0fffff8b7dbe649ad4821144461800ffb0d0.zip
cpython-76be0fffff8b7dbe649ad4821144461800ffb0d0.tar.gz
cpython-76be0fffff8b7dbe649ad4821144461800ffb0d0.tar.bz2
bpo-13312: Avoid int underflow in time year. (GH-8912)
Avoids an integer underflow in the time module's year handling code.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_time.py11
1 files changed, 5 insertions, 6 deletions
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 7354b96..9acd1d4 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -19,7 +19,7 @@ except ImportError:
# Max year is only limited by the size of C int.
SIZEOF_INT = sysconfig.get_config_var('SIZEOF_INT') or 4
TIME_MAXYEAR = (1 << 8 * SIZEOF_INT - 1) - 1
-TIME_MINYEAR = -TIME_MAXYEAR - 1
+TIME_MINYEAR = -TIME_MAXYEAR - 1 + 1900
SEC_TO_US = 10 ** 6
US_TO_NS = 10 ** 3
@@ -714,12 +714,11 @@ class _Test4dYear:
self.assertEqual(self.yearstr(-123456), '-123456')
self.assertEqual(self.yearstr(-123456789), str(-123456789))
self.assertEqual(self.yearstr(-1234567890), str(-1234567890))
- self.assertEqual(self.yearstr(TIME_MINYEAR + 1900), str(TIME_MINYEAR + 1900))
- # Issue #13312: it may return wrong value for year < TIME_MINYEAR + 1900
- # Skip the value test, but check that no error is raised
- self.yearstr(TIME_MINYEAR)
- # self.assertEqual(self.yearstr(TIME_MINYEAR), str(TIME_MINYEAR))
+ self.assertEqual(self.yearstr(TIME_MINYEAR), str(TIME_MINYEAR))
+ # Modules/timemodule.c checks for underflow
self.assertRaises(OverflowError, self.yearstr, TIME_MINYEAR - 1)
+ with self.assertRaises(OverflowError):
+ self.yearstr(-TIME_MAXYEAR - 1)
class TestAsctime4dyear(_TestAsctimeYear, _Test4dYear, unittest.TestCase):