Commit 7d12c559 authored by Brett Cannon's avatar Brett Cannon

Merged revisions 75011 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75011 | brett.cannon | 2009-09-21 17:29:48 -0700 (Mon, 21 Sep 2009) | 10 lines

  When range checking was added to time.strftime() a check was placed on tm_isdst
  to make sure it fell within [-1, 1] just in case someone implementing
  strftime() in libc was stupid enough to assume this. Turns out, though, some
  OSs (e.g. zOS) are stupid enough to use values outside of this range for time
  structs created by the system itself. So instead of throwing a ValueError,
  tm_isdst is now normalized before being passed to strftime().

  Fixes issue #6823. Thanks Robert Shapiro for diagnosing the problem and
  contributing an initial patch.
........
parent ca767bd2
......@@ -87,11 +87,6 @@ class TimeTestCase(unittest.TestCase):
(1900, 1, 1, 0, 0, 0, 0, -1, -1))
self.assertRaises(ValueError, time.strftime, '',
(1900, 1, 1, 0, 0, 0, 0, 367, -1))
# Check daylight savings flag [-1, 1]
self.assertRaises(ValueError, time.strftime, '',
(1900, 1, 1, 0, 0, 0, 0, 1, -2))
self.assertRaises(ValueError, time.strftime, '',
(1900, 1, 1, 0, 0, 0, 0, 1, 2))
def test_default_values_for_zero(self):
# Make sure that using all zeros uses the proper default values.
......
......@@ -674,6 +674,7 @@ Jerry Seutter
Denis Severson
Ian Seyer
Ha Shao
Richard Shapiro
Bruce Sherwood
Pete Shinners
Michael Shiplett
......
......@@ -512,11 +512,13 @@ time_strftime(PyObject *self, PyObject *args)
PyErr_SetString(PyExc_ValueError, "day of year out of range");
return NULL;
}
if (buf.tm_isdst < -1 || buf.tm_isdst > 1) {
PyErr_SetString(PyExc_ValueError,
"daylight savings flag out of range");
return NULL;
}
/* Normalize tm_isdst just in case someone foolishly implements %Z
based on the assumption that tm_isdst falls within the range of
[-1, 1] */
if (buf.tm_isdst < -1)
buf.tm_isdst = -1;
else if (buf.tm_isdst > 1)
buf.tm_isdst = 1;
#ifdef HAVE_WCSFTIME
tmpfmt = PyBytes_FromStringAndSize(NULL,
......
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