]> 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>
Wed, 28 Oct 2020 18:35:49 +0000 (21:35 +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 48f205802e5406500ae07f01f5e7492bc1912b64..da6ba89deff6ecaffb65dbde478e4d7bf7f2876d 100644 (file)
@@ -8104,6 +8104,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)) {
@@ -8129,16 +8139,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);