From: Guido Vranken Date: Thu, 8 Jun 2017 22:04:36 +0000 (+0200) Subject: Fix memory leak in add_option() for option 'connection' X-Git-Tag: v2.3.17~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64933bf444fd83a6f04a1a13f0b2a67caa43a2cb;p=thirdparty%2Fopenvpn.git Fix memory leak in add_option() for option 'connection' This patch ensures that if an error occurs while processing the 'connection' directive of an options specification, the variable 'struct options sub', which is initialized with init_options(), is properly freed with uninit_options(). Signed-off-by: Guido Vranken Acked-by: Gert Doering Message-Id: URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg14764.html Signed-off-by: Gert Doering (cherry picked from commit d89e14d92623731d2fa6343a11072caab32e13cd) --- diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 79f861bf6..32b4961ba 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -4565,12 +4565,16 @@ add_option (struct options *options, if (!sub.ce.remote) { msg (msglevel, "Each 'connection' block must contain exactly one 'remote' directive"); + uninit_options (&sub); goto err; } e = alloc_connection_entry (options, msglevel); if (!e) - goto err; + { + uninit_options (&sub); + goto err; + } *e = sub.ce; gc_transfer (&options->gc, &sub.gc); uninit_options (&sub);