]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospfd: fix check for network configuration
authorIgor Ryzhov <iryzhov@nfware.com>
Tue, 13 Oct 2020 21:25:35 +0000 (00:25 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Tue, 13 Oct 2020 23:20:27 +0000 (02:20 +0300)
We should check for existing networks configuration before creating
if_params structure, or it leads to the memory leak.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
ospfd/ospf_vty.c

index 77bf04de692963544f610e77a14a7992da4ffef3..fd74cec1f5e7e898787063239d9ff30f813e8e70 100644 (file)
@@ -8168,6 +8168,16 @@ DEFUN (ip_ospf_area,
                return CMD_WARNING_CONFIG_FAILED;
        }
 
+       if (ospf) {
+               for (rn = route_top(ospf->networks); rn; rn = route_next(rn)) {
+                       if (rn->info != NULL) {
+                               vty_out(vty,
+                                       "Please remove all network commands first.\n");
+                               return CMD_WARNING_CONFIG_FAILED;
+                       }
+               }
+       }
+
        params = IF_DEF_PARAMS(ifp);
        if (OSPF_IF_PARAM_CONFIGURED(params, if_area)
            && !IPV4_ADDR_SAME(&params->if_area, &area_id)) {
@@ -8193,16 +8203,6 @@ DEFUN (ip_ospf_area,
                ospf_if_update_params((ifp), (addr));
        }
 
-       if (ospf) {
-               for (rn = route_top(ospf->networks); rn; rn = route_next(rn)) {
-                       if (rn->info != NULL) {
-                               vty_out(vty,
-                                       "Please remove all network commands first.\n");
-                               return CMD_WARNING_CONFIG_FAILED;
-                       }
-               }
-       }
-
        /* enable ospf on this interface with area_id */
        if (params) {
                SET_IF_PARAM(params, if_area);