]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: avoid memory leak in bgp flowspec list, plus usage of bool
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 20 Aug 2018 16:32:00 +0000 (18:32 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 21 Aug 2018 16:30:26 +0000 (18:30 +0200)
Avoid memory leak in bgp flowspec list.
Usage of bool parameter instead of int, to handle the number of entries
PBR.

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

index f8c06132084eb8b465387d0de98da3aabeff3f26..31d2c540fa524e2d044a299daad914ea6457cfef 100644 (file)
@@ -335,7 +335,7 @@ void route_vty_out_flowspec(struct vty *vty, struct prefix *p,
                        struct listnode *node;
                        struct bgp_pbr_match_entry *bpme;
                        struct bgp_pbr_match *bpm;
-                       int unit = 0;
+                       bool list_began = false;
                        struct list *list_bpm;
 
                        list_bpm = list_new();
@@ -347,14 +347,14 @@ void route_vty_out_flowspec(struct vty *vty, struct prefix *p,
                                if (listnode_lookup(list_bpm, bpm))
                                        continue;
                                listnode_add(list_bpm, bpm);
-                               if (unit == 0)
+                               if (!list_began) {
                                        vty_out(vty, " (");
-                               else
+                                       list_began = true;
+                               } else
                                        vty_out(vty, ", ");
                                vty_out(vty, "%s", bpm->ipset_name);
-                               unit++;
                        }
-                       if (unit)
+                       if (list_began)
                                vty_out(vty, ")");
                        vty_out(vty, "\n");
                        list_delete_and_null(&list_bpm);
index 041049d05b3f52550db0e72e6cf124030e81d3ce..eedfe7503e5437bdd41d6c71c3c54203f6faf4fc 100644 (file)
@@ -198,8 +198,7 @@ static void bgp_info_extra_free(struct bgp_info_extra **extra)
                bgp_unlock(e->bgp_orig);
 
        if ((*extra)->bgp_fs_pbr)
-               list_delete_all_node((*extra)->bgp_fs_pbr);
-       (*extra)->bgp_fs_pbr = NULL;
+               list_delete_and_null(&((*extra)->bgp_fs_pbr));
        XFREE(MTYPE_BGP_ROUTE_EXTRA, *extra);
 
        *extra = NULL;