SF 952807: Unpickling pickled instances of subclasses of datetime.date,

datetime.datetime and datetime.time could yield insane objects.  Thanks
to Jiwon Seo for the fix.

Bugfix candidate.  I'll backport it to 2.3.
This commit is contained in:
Tim Peters 2004-06-07 23:04:33 +00:00
parent d348193ff2
commit 604c013ef2
3 changed files with 41 additions and 6 deletions

View file

@ -2206,7 +2206,7 @@ date_new(PyTypeObject *type, PyObject *args, PyObject *kw)
{
PyDateTime_Date *me;
me = PyObject_New(PyDateTime_Date, type);
me = (PyDateTime_Date *) (type->tp_alloc(type, 0));
if (me != NULL) {
char *pdata = PyString_AS_STRING(state);
memcpy(me->data, pdata, _PyDateTime_DATE_DATASIZE);
@ -3049,8 +3049,7 @@ time_new(PyTypeObject *type, PyObject *args, PyObject *kw)
}
}
aware = (char)(tzinfo != Py_None);
me = (PyDateTime_Time *) time_alloc(&PyDateTime_TimeType,
aware);
me = (PyDateTime_Time *) (type->tp_alloc(type, aware));
if (me != NULL) {
char *pdata = PyString_AS_STRING(state);
@ -3572,9 +3571,7 @@ datetime_new(PyTypeObject *type, PyObject *args, PyObject *kw)
}
}
aware = (char)(tzinfo != Py_None);
me = (PyDateTime_DateTime *) datetime_alloc(
&PyDateTime_DateTimeType,
aware);
me = (PyDateTime_DateTime *) (type->tp_alloc(type , aware));
if (me != NULL) {
char *pdata = PyString_AS_STRING(state);