From d9ef74e3ddffc9327a3b225734cdc5a5028e8d0b Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Fri, 22 May 2015 15:08:34 -0700 Subject: [PATCH] Issue 24244: Prevents termination when an invalid format string is encountered on Windows. --- Misc/NEWS | 3 +++ Modules/timemodule.c | 9 ++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 8a1c77943f1..a62cca1fe2a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -58,6 +58,9 @@ Core and Builtins Library ------- +- Issue 24244: Prevents termination when an invalid format string is + encountered on Windows in strftime. + - Issue #23973: PEP 484: Add the typing module. - Issue #20035: Replaced the ``tkinter._fix`` module used for setting up the diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 5f6290d98ff..197d2c0b8dd 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -616,13 +616,6 @@ time_strftime(PyObject *self, PyObject *args) { if (outbuf[1]=='#') ++outbuf; /* not documented by python, */ - if (outbuf[1]=='\0' || - !strchr("aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1])) - { - PyErr_SetString(PyExc_ValueError, "Invalid format string"); - Py_DECREF(format); - return NULL; - } if ((outbuf[1] == 'y') && buf.tm_year < 0) { PyErr_SetString(PyExc_ValueError, @@ -660,7 +653,9 @@ time_strftime(PyObject *self, PyObject *args) PyErr_NoMemory(); break; } + _Py_BEGIN_SUPPRESS_IPH buflen = format_time(outbuf, i, fmt, &buf); + _Py_END_SUPPRESS_IPH #if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__) err = errno; #endif