From 178ec5990b201ec3d72d4eef6acb3954bfb31da6 Mon Sep 17 00:00:00 2001 From: Konstantin Demin Date: Tue, 16 Oct 2018 16:31:40 +0300 Subject: [PATCH] dropbear: fix memory leaks with zlib enabled cherry-pick upstream commit c1694230516fe1c3d78e4fd23aebd5fbc00ce21c Signed-off-by: Konstantin Demin --- ...9-fix-memory-leaks-with-zlib-enabled.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 package/network/services/dropbear/patches/009-fix-memory-leaks-with-zlib-enabled.patch 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); -- 2.30.2