[Python-checkins] cpython (2.7): Issue #10762: Guard against invalid/non-supported format string '%f' on

senthil.kumaran python-checkins at python.org
Wed Apr 6 08:45:33 CEST 2011


http://hg.python.org/cpython/rev/1320f29bcf98
changeset:   69169:1320f29bcf98
branch:      2.7
parent:      69162:5616cbce0bee
user:        Senthil Kumaran <orsenthil at gmail.com>
date:        Wed Apr 06 14:27:47 2011 +0800
summary:
  Issue #10762: Guard against invalid/non-supported format string '%f' on Windows. Patch Santoso Wijaya.

files:
  Lib/test/test_time.py |  8 ++++++++
  Modules/timemodule.c  |  2 +-
  2 files changed, 9 insertions(+), 1 deletions(-)


diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
--- 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 @@
             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
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -487,7 +487,7 @@
         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;

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list