Commit 8f377a3b authored by Senthil Kumaran's avatar Senthil Kumaran

Issue #10762: Guard against invalid/non-supported format string '%f' on...

Issue #10762: Guard against invalid/non-supported format string '%f' on Windows. Patch Santoso Wijaya.
parent c824e9a7
...@@ -2,6 +2,7 @@ from test import support ...@@ -2,6 +2,7 @@ from test import support
import time import time
import unittest import unittest
import locale import locale
import sys
class TimeTestCase(unittest.TestCase): class TimeTestCase(unittest.TestCase):
...@@ -37,6 +38,13 @@ class TimeTestCase(unittest.TestCase): ...@@ -37,6 +38,13 @@ class TimeTestCase(unittest.TestCase):
except ValueError: except ValueError:
self.fail('conversion specifier: %r failed.' % format) self.fail('conversion specifier: %r failed.' % format)
# Issue #10762: Guard against invalid/non-supported format string
# so that Python don't crash (Windows crashes when the format string
# input to [w]strftime is not kosher.
if sys.platform.startswith('win'):
with self.assertRaises(ValueError):
time.strftime('%f')
def test_strftime_bounds_checking(self): def test_strftime_bounds_checking(self):
# Make sure that strftime() checks the bounds of the various parts # Make sure that strftime() checks the bounds of the various parts
#of the time tuple (0 is valid for *all* values). #of the time tuple (0 is valid for *all* values).
......
...@@ -549,7 +549,7 @@ time_strftime(PyObject *self, PyObject *args) ...@@ -549,7 +549,7 @@ time_strftime(PyObject *self, PyObject *args)
if (outbuf[1]=='#') if (outbuf[1]=='#')
++outbuf; /* not documented by python, */ ++outbuf; /* not documented by python, */
if (outbuf[1]=='\0' || if (outbuf[1]=='\0' ||
!wcschr(L"aAbBcdfHIjmMpSUwWxXyYzZ%", outbuf[1])) !wcschr(L"aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1]))
{ {
PyErr_SetString(PyExc_ValueError, "Invalid format string"); PyErr_SetString(PyExc_ValueError, "Invalid format string");
return 0; return 0;
......
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