comparison contrib/python-zstandard/c-ext/decompressor.c @ 30830:08fa3a76a080

zstd: prevent potential free() of uninitialized memory This is a cherry pick of an upstream fix. The free() of uninitialed memory could likely only occur if a malloc() inside zstd fails. The patched functions aren't currently used by Mercurial. But I don't like leaving footguns sitting around.
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 17 Jan 2017 10:17:13 -0800
parents b86a448a2965
children c32454d69b85
comparison
equal deleted inserted replaced
30829:08b34c3a6f74 30830:08fa3a76a080
162 162
163 if (!PyObject_HasAttrString(dest, "write")) { 163 if (!PyObject_HasAttrString(dest, "write")) {
164 PyErr_SetString(PyExc_ValueError, "second argument must have a write() method"); 164 PyErr_SetString(PyExc_ValueError, "second argument must have a write() method");
165 return NULL; 165 return NULL;
166 } 166 }
167
168 /* Prevent free on uninitialized memory in finally. */
169 output.dst = NULL;
167 170
168 dstream = DStream_from_ZstdDecompressor(self); 171 dstream = DStream_from_ZstdDecompressor(self);
169 if (!dstream) { 172 if (!dstream) {
170 res = NULL; 173 res = NULL;
171 goto finally; 174 goto finally;