ospfd: fix check for network configuration

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>
This commit is contained in:
Igor Ryzhov 2020-10-14 00:25:35 +03:00
parent 5e28025a5b
commit eb364867d4

View 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);