From: Donald Sharp Date: Thu, 17 Mar 2016 21:26:46 +0000 (-0400) Subject: ospfd: Fix Dereference of Null Pointer during config X-Git-Tag: frr-2.0-rc1~1058 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=d8f70b86d7fd55c0beb3e93abec9a33fd5a96ee3;p=mirror%2Ffrr.git ospfd: Fix Dereference of Null Pointer during config This construct: struct ospf *ospf = vty->index; if (!ospf) return CMD_SUCCESS; Is present throughout the entire ospfd code base. The command: distance ospf external 255 Is not protected by this construct. I added this construct to the command and in addition did a quick search to find any others not protected and to protect them. Ticket: CM-9725 Signed-off-by: Donald Sharp Reviewed-by: Don Slice --- diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 66d74c655c..9122a219df 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -2463,6 +2463,9 @@ DEFUN (ospf_timers_min_ls_interval, struct ospf *ospf = vty->index; unsigned int interval; + if (!ospf) + return CMD_SUCCESS; + if (argc != 1) { vty_out (vty, "Insufficient arguments%s", VTY_NEWLINE); @@ -2512,6 +2515,9 @@ DEFUN (ospf_timers_min_ls_arrival, struct ospf *ospf = vty->index; unsigned int arrival; + if (!ospf) + return CMD_SUCCESS; + if (argc != 1) { vty_out (vty, "Insufficient arguments%s", VTY_NEWLINE); @@ -2534,6 +2540,10 @@ DEFUN (no_ospf_timers_min_ls_arrival, "OSPF minimum arrival interval delay\n") { struct ospf *ospf = vty->index; + + if (!ospf) + return CMD_SUCCESS; + ospf->min_ls_arrival = OSPF_MIN_LS_ARRIVAL; return CMD_SUCCESS; @@ -8077,6 +8087,9 @@ DEFUN (ospf_redistribute_source, int metric = -1; struct ospf_redist *red; + if (!ospf) + return CMD_SUCCESS; + if (argc < 4) return CMD_WARNING; /* should not happen */ @@ -8164,6 +8177,9 @@ DEFUN (ospf_redistribute_instance_source, u_short instance; struct ospf_redist *red; + if (!ospf) + return CMD_SUCCESS; + if (strncmp(argv[0], "o", 1) == 0) source = ZEBRA_ROUTE_OSPF; else @@ -8493,6 +8509,9 @@ DEFUN (no_ospf_distance_ospf, { struct ospf *ospf = vty->index; + if (!ospf) + return CMD_SUCCESS; + if (argc < 3) return CMD_WARNING; @@ -8534,6 +8553,9 @@ DEFUN (ospf_distance_ospf, { struct ospf *ospf = vty->index; + if (!ospf) + return CMD_SUCCESS; + if (argc < 3) /* should not happen */ return CMD_WARNING;