Protection against picling to/from closed (real) file.
The problem was reported by Moshe Zadka.
This commit is contained in:
parent
89ae2b9f07
commit
c91fcaa43b
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue