From f3478d9d759705896bb3446785a7087ad22e4e94 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Tue, 28 Dec 2004 20:31:27 +0000 Subject: [PATCH] [Bug #1083110] calling .flush() on decompress objects causes a segfault due to an uninitialized pointer: fixes the problem and adds a test case --- Misc/NEWS | 5 +++++ Modules/zlibmodule.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS b/Misc/NEWS index 4f41753e3e2e..7e371debbdb7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -65,6 +65,11 @@ Extension modules - Patch #945642: Fix non-blocking SSL sockets, which blocked on reads/writes. +- Bug #1083110: ``zlib.decompress.flush()`` would segfault if called + immediately after creating the object, without any intervening + ``.decompress()`` calls. + + Library ------- diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index 7fedae7887c8..c3238a068501 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -301,6 +301,8 @@ PyZlib_compressobj(PyObject *selfptr, PyObject *args) return(NULL); self->zst.zalloc = (alloc_func)NULL; self->zst.zfree = (free_func)Z_NULL; + self->zst.next_in = NULL; + self->zst.avail_in = 0; err = deflateInit2(&self->zst, level, method, wbits, memLevel, strategy); switch(err) { case (Z_OK): @@ -335,6 +337,8 @@ PyZlib_decompressobj(PyObject *selfptr, PyObject *args) return(NULL); self->zst.zalloc = (alloc_func)NULL; self->zst.zfree = (free_func)Z_NULL; + self->zst.next_in = NULL; + self->zst.avail_in = 0; err = inflateInit2(&self->zst, wbits); switch(err) { case (Z_OK): @@ -516,7 +520,7 @@ PyZlib_objdecompress(compobject *self, PyObject *args) Py_END_ALLOW_THREADS } - /* Not all of the compressed data could be accomodated in the output buffer + /* Not all of the compressed data could be accommodated in the output buffer of specified size. Return the unconsumed tail in an attribute.*/ if(max_length) { Py_DECREF(self->unconsumed_tail); -- 2.47.3