summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2015-09-07 02:20:51 (GMT)
committerSteve Dower <steve.dower@microsoft.com>2015-09-07 02:20:51 (GMT)
commite5b5895b5b52ff14093eaababd04ede69e394959 (patch)
tree02b475de7c082ad699d769702b7f502167b2064d /Lib/test
parent714e49371b8d73059cf19f92a8566dcd20c6089a (diff)
downloadcpython-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.py13
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