]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix memory leak in add_option() for option 'connection'
authorGuido Vranken <guidovranken@gmail.com>
Thu, 8 Jun 2017 22:04:36 +0000 (00:04 +0200)
committerGert Doering <gert@greenie.muc.de>
Sat, 10 Jun 2017 07:20:03 +0000 (09:20 +0200)
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 <guidovranken@gmail.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <CAO5O-E+HdfHNAK=--55054AB374U-Ky4q_-3M114makfPdSnBw@mail.gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg14764.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
(cherry picked from commit d89e14d92623731d2fa6343a11072caab32e13cd)

src/openvpn/options.c

index 57818e132ac0cfdc995c402f65ec66c5ba1ebc9e..41129ca093e06b73053130ebd67fb3b52d8032e5 100644 (file)
@@ -5318,12 +5318,14 @@ 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)
             {
+                uninit_options(&sub);
                 goto err;
             }
             *e = sub.ce;