]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix (potential) memory leak in init_route_list()
authorSteffan Karger <steffan@karger.me>
Thu, 5 Nov 2015 22:17:01 +0000 (23:17 +0100)
committerGert Doering <gert@greenie.muc.de>
Fri, 6 Nov 2015 20:36:10 +0000 (21:36 +0100)
init_route() can allocate memory in netlist, but fail in many more ways
than just fail to allocate.  Thus, always check and clean up netlist if
needed, instead of just when init_route() succeeds.

This fix is for release/2.3 only.  The master branch uses a gc to clean
up the netlist, and needs a different patch for a similar problem.

Found using coverity.

Signed-off-by: Steffan Karger <steffan@karger.me>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1446761821-14013-1-git-send-email-steffan@karger.me>
URL: http://article.gmane.org/gmane.network.openvpn.devel/10442
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/route.c

index bb998cb9bfdb1b3de2329e0300dc2f78ee9c1b09..a3d4b711e00753d2fd06aea6be4f1bfde11c688f 100644 (file)
@@ -648,7 +648,7 @@ init_route_list (struct route_list *rl,
     bool warned = false;
     for (i = 0; i < opt->n; ++i)
       {
-        struct addrinfo* netlist;
+        struct addrinfo* netlist = NULL;
        struct route_ipv4 r;
 
        if (!init_route (&r,
@@ -675,8 +675,9 @@ init_route_list (struct route_list *rl,
                      }
                  }
              }
-            freeaddrinfo(netlist);
          }
+       if (netlist)
+         freeaddrinfo(netlist);
       }
     rl->n = j;
   }