Patch #101810: check whether zst.avail_out is non-zero when getting
a Z_BUF_ERROR while decompressing. If it is, assume that this means the data being decompressed is bad and raise an exception, instead of just assuming that Z_BUF_ERROR always means that more space is required.
This commit is contained in:
parent
46735add5f
commit
d923831027
|
@ -214,7 +214,21 @@ PyZlib_decompress(PyObject *self, PyObject *args)
|
|||
case(Z_STREAM_END):
|
||||
break;
|
||||
case(Z_BUF_ERROR):
|
||||
case(Z_OK):
|
||||
/*
|
||||
* If there is at least 1 byte of room according to zst.avail_out
|
||||
* and we get this error, assume that it means zlib cannot
|
||||
* process the inflate call() due to an error in the data.
|
||||
*/
|
||||
if (zst.avail_out > 0)
|
||||
{
|
||||
PyErr_Format(ZlibError, "Error %i while decompressing data",
|
||||
err);
|
||||
inflateEnd(&zst);
|
||||
Py_DECREF(result_str);
|
||||
return NULL;
|
||||
}
|
||||
/* fall through */
|
||||
case(Z_OK):
|
||||
/* need more memory */
|
||||
if (_PyString_Resize(&result_str, r_strlen << 1) == -1)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue