re-merge r69268 (issue4804) from trunk:
Now that the C runtime assertions are not silenced any more, we must provide checks for the format string of strftime
This commit is contained in:
parent
f5b52246ed
commit
b5be6d4819
|
@ -513,6 +513,24 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
if (format == NULL)
|
||||
return NULL;
|
||||
fmt = PyBytes_AS_STRING(format);
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
/* check that the format string contains only valid directives */
|
||||
for(outbuf = strchr(fmt, '%');
|
||||
outbuf != NULL;
|
||||
outbuf = strchr(outbuf+2, '%'))
|
||||
{
|
||||
if (outbuf[1]=='#')
|
||||
++outbuf; /* not documented by python, */
|
||||
if (outbuf[1]=='\0' ||
|
||||
!strchr("aAbBcdfHIjmMpSUwWxXyYzZ%", outbuf[1]))
|
||||
{
|
||||
PyErr_SetString(PyExc_ValueError, "Invalid format string");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
fmtlen = strlen(fmt);
|
||||
|
||||
/* I hate these functions that presume you know how big the output
|
||||
|
|
Loading…
Reference in New Issue