From: Konstantin Demin Date: Tue, 16 Oct 2018 13:31:40 +0000 (+0300) Subject: dropbear: fix memory leaks with zlib enabled X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=178ec5990b201ec3d72d4eef6acb3954bfb31da6;p=openwrt%2Fstaging%2Fdedeckeh.git dropbear: fix memory leaks with zlib enabled cherry-pick upstream commit c1694230516fe1c3d78e4fd23aebd5fbc00ce21c Signed-off-by: Konstantin Demin --- diff --git a/package/network/services/dropbear/patches/009-fix-memory-leaks-with-zlib-enabled.patch b/package/network/services/dropbear/patches/009-fix-memory-leaks-with-zlib-enabled.patch new file mode 100644 index 0000000000..f3cbfc9c86 --- /dev/null +++ b/package/network/services/dropbear/patches/009-fix-memory-leaks-with-zlib-enabled.patch @@ -0,0 +1,29 @@ +--- a/common-kex.c ++++ b/common-kex.c +@@ -403,6 +403,7 @@ static void gen_new_zstream_recv() { + ses.newkeys->recv.zstream->zfree = Z_NULL; + + if (inflateInit(ses.newkeys->recv.zstream) != Z_OK) { ++ m_free(ses.newkeys->recv.zstream); + dropbear_exit("zlib error"); + } + } else { +--- a/common-session.c ++++ b/common-session.c +@@ -298,6 +298,16 @@ void session_cleanup() { + buf_free(dequeue(&ses.writequeue)); + } + ++ m_free(ses.newkeys); ++#ifndef DISABLE_ZLIB ++ if (ses.keys->recv.zstream != NULL) { ++ if (inflateEnd(ses.keys->recv.zstream) == Z_STREAM_ERROR) { ++ dropbear_exit("Crypto error"); ++ } ++ m_free(ses.keys->recv.zstream); ++ } ++#endif ++ + m_free(ses.remoteident); + m_free(ses.authstate.pw_dir); + m_free(ses.authstate.pw_name);