]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: fix memory leaks in bgp_show_table
authorIgor Ryzhov <iryzhov@nfware.com>
Wed, 11 Aug 2021 09:22:21 +0000 (12:22 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Fri, 13 Aug 2021 11:45:08 +0000 (14:45 +0300)
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
bgpd/bgp_route.c

index 6039a91f7dae4420db5754c749c5f87d1e8cb1f9..c12d2394f33508ede879cbc1611abeabeb13b9ae 100644 (file)
@@ -10728,12 +10728,14 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
                                                const char *com2alias =
                                                        bgp_community2alias(
                                                                communities[i]);
-                                               if (strcmp(alias, com2alias)
-                                                   == 0) {
+                                               if (!found
+                                                   && strcmp(alias, com2alias)
+                                                              == 0)
                                                        found = true;
-                                                       break;
-                                               }
+                                               XFREE(MTYPE_TMP,
+                                                     communities[i]);
                                        }
+                                       XFREE(MTYPE_TMP, communities);
                                }
 
                                if (!found && pi->attr->lcommunity) {
@@ -10743,12 +10745,14 @@ static int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,
                                                const char *com2alias =
                                                        bgp_community2alias(
                                                                communities[i]);
-                                               if (strcmp(alias, com2alias)
-                                                   == 0) {
+                                               if (!found
+                                                   && strcmp(alias, com2alias)
+                                                              == 0)
                                                        found = true;
-                                                       break;
-                                               }
+                                               XFREE(MTYPE_TMP,
+                                                     communities[i]);
                                        }
+                                       XFREE(MTYPE_TMP, communities);
                                }
 
                                if (!found)