]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: do not crash when removing ip vpn entries
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 21 Jan 2019 16:19:53 +0000 (17:19 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 21 Jan 2019 16:37:05 +0000 (17:37 +0100)
when removing bgp instance, the parsing of rm->info contexts must be
protected. Also, the main level of hierarchy of rds must not be
allocated more than once.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
bgpd/bgp_route.c

index 6bce7261aebe364d7fa747bc5696211b3f9df6f9..07077dfe1f035c3986227e26c5815834115ebd77 100644 (file)
@@ -5081,6 +5081,9 @@ void bgp_static_delete(struct bgp *bgp)
                                        bgp_static =
                                                bgp_node_get_bgp_static_info(
                                                        rm);
+                                       if (!bgp_static)
+                                               continue;
+
                                        bgp_static_withdraw_safi(
                                                bgp, &rm->p, AFI_IP, safi,
                                                (struct prefix_rd *)&rn->p);
@@ -5257,8 +5260,6 @@ int bgp_static_set_safi(afi_t afi, safi_t safi, struct vty *vty,
        if (!bgp_node_has_bgp_path_info_data(prn))
                bgp_node_set_bgp_table_info(prn,
                                            bgp_table_init(bgp, afi, safi));
-       else
-               bgp_unlock_node(prn);
        table = bgp_node_get_bgp_table_info(prn);
 
        rn = bgp_node_get(table, &p);