mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
Patch #1535500: fix segfault in BZ2File.writelines and make sure it
raises the correct exceptions.
This commit is contained in:
parent
2463f8f831
commit
3335a7ad63
3 changed files with 22 additions and 2 deletions
|
@ -166,6 +166,8 @@ class BZ2FileTest(BaseTest):
|
|||
sio = StringIO(self.TEXT)
|
||||
bz2f.writelines(sio.readlines())
|
||||
bz2f.close()
|
||||
# patch #1535500
|
||||
self.assertRaises(ValueError, bz2f.writelines, ["a"])
|
||||
f = open(self.filename, 'rb')
|
||||
self.assertEqual(self.decompress(f.read()), self.TEXT)
|
||||
f.close()
|
||||
|
|
|
@ -79,6 +79,9 @@ Library
|
|||
Extension Modules
|
||||
-----------------
|
||||
|
||||
- Patch #1535500: fix segfault in BZ2File.writelines and make sure it
|
||||
raises the correct exceptions.
|
||||
|
||||
- Patch # 1536908: enable building ctypes on OpenBSD/AMD64. The
|
||||
'-no-stack-protector' compiler flag for OpenBSD has been removed.
|
||||
|
||||
|
|
|
@ -812,12 +812,12 @@ BZ2File_write(BZ2FileObject *self, PyObject *args)
|
|||
case MODE_CLOSED:
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"I/O operation on closed file");
|
||||
goto cleanup;;
|
||||
goto cleanup;
|
||||
|
||||
default:
|
||||
PyErr_SetString(PyExc_IOError,
|
||||
"file is not ready for writing");
|
||||
goto cleanup;;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
self->f_softspace = 0;
|
||||
|
@ -861,6 +861,21 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
|
|||
int bzerror;
|
||||
|
||||
ACQUIRE_LOCK(self);
|
||||
switch (self->mode) {
|
||||
case MODE_WRITE:
|
||||
break;
|
||||
|
||||
case MODE_CLOSED:
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"I/O operation on closed file");
|
||||
goto error;
|
||||
|
||||
default:
|
||||
PyErr_SetString(PyExc_IOError,
|
||||
"file is not ready for writing");
|
||||
goto error;
|
||||
}
|
||||
|
||||
islist = PyList_Check(seq);
|
||||
if (!islist) {
|
||||
iter = PyObject_GetIter(seq);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue