mirror of
https://github.com/python/cpython.git
synced 2025-09-30 12:21:51 +00:00
Issue #12839: Fix crash in zlib module due to version mismatch.
If the version of zlib used to compile the zlib module is incompatible with the one that is actually linked in, then calls into zlib will fail. This can leave attributes of the z_stream uninitialized, so we must take care to avoid segfaulting by trying to use an invalid pointer. Fix by Richard M. Tew.
This commit is contained in:
parent
0c97e5f36a
commit
97d67924e3
3 changed files with 12 additions and 1 deletions
|
@ -873,6 +873,7 @@ Monty Taylor
|
||||||
Amy Taylor
|
Amy Taylor
|
||||||
Anatoly Techtonik
|
Anatoly Techtonik
|
||||||
Mikhail Terekhov
|
Mikhail Terekhov
|
||||||
|
Richard M. Tew
|
||||||
Tobias Thelen
|
Tobias Thelen
|
||||||
James Thomas
|
James Thomas
|
||||||
Robin Thomas
|
Robin Thomas
|
||||||
|
|
|
@ -17,6 +17,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #12839: Fix crash in zlib module due to version mismatch.
|
||||||
|
Fix by Richard M. Tew.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 3.2.2 release candidate 1?
|
What's New in Python 3.2.2 release candidate 1?
|
||||||
===============================================
|
===============================================
|
||||||
|
|
|
@ -52,7 +52,13 @@ typedef struct
|
||||||
static void
|
static void
|
||||||
zlib_error(z_stream zst, int err, char *msg)
|
zlib_error(z_stream zst, int err, char *msg)
|
||||||
{
|
{
|
||||||
const char *zmsg = zst.msg;
|
const char *zmsg = Z_NULL;
|
||||||
|
/* In case of a version mismatch, zst.msg won't be initialized.
|
||||||
|
Check for this case first, before looking at zst.msg. */
|
||||||
|
if (err == Z_VERSION_ERROR)
|
||||||
|
zmsg = "library version mismatch";
|
||||||
|
if (zmsg == Z_NULL)
|
||||||
|
zmsg = zst.msg;
|
||||||
if (zmsg == Z_NULL) {
|
if (zmsg == Z_NULL) {
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case Z_BUF_ERROR:
|
case Z_BUF_ERROR:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue