From 792eb5dc84b1a7d4652994ca970923bec0573614 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Wed, 6 Apr 2011 14:27:47 +0800 Subject: [PATCH] Issue #10762: Guard against invalid/non-supported format string '%f' on Windows. Patch Santoso Wijaya. --- Lib/test/test_time.py | 8 ++++++++ Modules/timemodule.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index b4d12b4aaf9..0f00b1af52d 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -1,6 +1,7 @@ from test import test_support import time import unittest +import sys class TimeTestCase(unittest.TestCase): @@ -37,6 +38,13 @@ class TimeTestCase(unittest.TestCase): except ValueError: 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): # Make sure that strftime() checks the bounds of the various parts #of the time tuple (0 is valid for *all* values). diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 51f472ef629..397cf8cd6f9 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -487,7 +487,7 @@ time_strftime(PyObject *self, PyObject *args) if (outbuf[1]=='#') ++outbuf; /* not documented by python, */ if (outbuf[1]=='\0' || - !strchr("aAbBcdfHIjmMpSUwWxXyYzZ%", outbuf[1])) + !strchr("aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1])) { PyErr_SetString(PyExc_ValueError, "Invalid format string"); return 0;