Mercurial > hg
changeset 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 | 08b34c3a6f74 |
children | 9f264adbe75b |
files | contrib/python-zstandard/c-ext/compressor.c contrib/python-zstandard/c-ext/decompressor.c |
diffstat | 2 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/python-zstandard/c-ext/compressor.c Tue Jan 17 11:25:02 2017 -0800 +++ b/contrib/python-zstandard/c-ext/compressor.c Tue Jan 17 10:17:13 2017 -0800 @@ -258,6 +258,9 @@ return NULL; } + /* Prevent free on uninitialized memory in finally. */ + output.dst = NULL; + cstream = CStream_from_ZstdCompressor(self, sourceSize); if (!cstream) { res = NULL;
--- a/contrib/python-zstandard/c-ext/decompressor.c Tue Jan 17 11:25:02 2017 -0800 +++ b/contrib/python-zstandard/c-ext/decompressor.c Tue Jan 17 10:17:13 2017 -0800 @@ -165,6 +165,9 @@ return NULL; } + /* Prevent free on uninitialized memory in finally. */ + output.dst = NULL; + dstream = DStream_from_ZstdDecompressor(self); if (!dstream) { res = NULL;