Issue #8013: Fixed time.asctime segfault when OS's asctime fails

This commit is contained in:
Alexander Belopolsky 2011-01-02 20:48:22 +00:00
parent ece919eb0f
commit e2dc082294
2 changed files with 7 additions and 0 deletions

View File

@ -122,6 +122,9 @@ class TimeTestCase(unittest.TestCase):
def test_asctime(self):
time.asctime(time.gmtime(self.t))
self.assertRaises(TypeError, time.asctime, 0)
self.assertRaises(TypeError, time.asctime, ())
self.assertRaises(ValueError, time.asctime,
(12345, 1, 0, 0, 0, 0, 0, 0, 0))
def test_asctime_bounding_check(self):
self._bounds_checking(time.asctime)

View File

@ -620,6 +620,10 @@ time_asctime(PyObject *self, PyObject *args)
} else if (!gettmarg(tup, &buf) || !checktm(&buf))
return NULL;
p = asctime(&buf);
if (p == NULL) {
PyErr_SetString(PyExc_ValueError, "invalid time");
return NULL;
}
if (p[24] == '\n')
p[24] = '\0';
return PyUnicode_FromString(p);