Protection against picling to/from closed (real) file.

The problem was reported by Moshe Zadka.
This commit is contained in:
Guido van Rossum 1999-03-29 20:00:14 +00:00
parent 89ae2b9f07
commit c91fcaa43b
1 changed files with 8 additions and 0 deletions

View File

@ -2072,6 +2072,10 @@ newPicklerobject(PyObject *file, int bin) {
if (PyFile_Check(file)) { if (PyFile_Check(file)) {
self->fp = PyFile_AsFile(file); self->fp = PyFile_AsFile(file);
if (self->fp == NULL) {
PyErr_SetString(PyExc_IOError, "output file closed");
return NULL;
}
self->write_func = write_file; self->write_func = write_file;
} }
else if (PycStringIO_OutputCheck(file)) { else if (PycStringIO_OutputCheck(file)) {
@ -3897,6 +3901,10 @@ newUnpicklerobject(PyObject *f) {
/* Set read, readline based on type of f */ /* Set read, readline based on type of f */
if (PyFile_Check(f)) { if (PyFile_Check(f)) {
self->fp = PyFile_AsFile(f); self->fp = PyFile_AsFile(f);
if (self->fp == NULL) {
PyErr_SetString(PyExc_IOError, "input file closed");
return NULL;
}
self->read_func = read_file; self->read_func = read_file;
self->readline_func = readline_file; self->readline_func = readline_file;
} }