diff options
| author | Gregory P. Smith <greg@krypto.org> | 2018-08-24 18:08:50 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-24 18:08:50 -0700 | 
| commit | 76be0fffff8b7dbe649ad4821144461800ffb0d0 (patch) | |
| tree | 9ef8e6646a08ddf8ae63a2600945b3c47f3ab79b /Lib/test | |
| parent | eb746dbae8b320758ee08f811316d7f283435cc0 (diff) | |
| download | cpython-git-76be0fffff8b7dbe649ad4821144461800ffb0d0.tar.gz | |
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.py | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 7354b96990..9acd1d497e 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):  | 
