diff --git a/Misc/ACKS b/Misc/ACKS index cdae287ddae..e728c511e13 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -813,6 +813,7 @@ Monty Taylor Amy Taylor Anatoly Techtonik Mikhail Terekhov +Richard M. Tew Tobias Thelen James Thomas Robin Thomas diff --git a/Misc/NEWS b/Misc/NEWS index e7faa4e117d..3709142c8fe 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -40,6 +40,9 @@ Core and Builtins Library ------- +- Issue #12839: Fix crash in zlib module due to version mismatch. + Fix by Richard M. Tew. + - Issue #12786: Set communication pipes used by subprocess.Popen CLOEXEC to avoid them being inherited by other subprocesses. diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index bd6d6e256bc..035aa8e085d 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -72,7 +72,13 @@ typedef struct static void 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) { switch (err) { case Z_BUF_ERROR: