diff options
author | Steve Dower <steve.dower@microsoft.com> | 2015-09-07 02:20:51 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2015-09-07 02:20:51 (GMT) |
commit | e5b5895b5b52ff14093eaababd04ede69e394959 (patch) | |
tree | 02b475de7c082ad699d769702b7f502167b2064d /Lib/test | |
parent | 714e49371b8d73059cf19f92a8566dcd20c6089a (diff) | |
download | cpython-e5b5895b5b52ff14093eaababd04ede69e394959.zip cpython-e5b5895b5b52ff14093eaababd04ede69e394959.tar.gz cpython-e5b5895b5b52ff14093eaababd04ede69e394959.tar.bz2 |
Issue #24917: time_strftime() buffer over-read.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_time.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 6334e02..6bcd212 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -174,6 +174,19 @@ class TimeTestCase(unittest.TestCase): def test_strftime_bounding_check(self): self._bounds_checking(lambda tup: time.strftime('', tup)) + def test_strftime_format_check(self): + # Test that strftime does not crash on invalid format strings + # that may trigger a buffer overread. When not triggered, + # strftime may succeed or raise ValueError depending on + # the platform. + for x in [ '', 'A', '%A', '%AA' ]: + for y in range(0x0, 0x10): + for z in [ '%', 'A%', 'AA%', '%A%', 'A%A%', '%#' ]: + try: + time.strftime(x * y + z) + except ValueError: + pass + def test_default_values_for_zero(self): # Make sure that using all zeros uses the proper default # values. No test for daylight savings since strftime() does |