]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Fix memory leak when creating BMP connection with a source interface 17683/head
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 19 Dec 2024 08:56:52 +0000 (10:56 +0200)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 19 Dec 2024 21:57:25 +0000 (21:57 +0000)
Testing done with:

```
for x in $(seq 1 100000); do vtysh -c 'conf' -c 'router bgp' -c 'bmp targets test' -c 'bmp connect localhost port 123 min-retry 100 max-retry 100 source-interface lo'; done
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 7d19cb59cf5b129f61f3c568899343b3f031f9b4)

bgpd/bgp_bmp.c

index dbc356bc401a5680959dddf0a698bf3fb274b0ea..80e0d4d440c1a7dee7019958498eed15f3756470 100644 (file)
@@ -2154,8 +2154,11 @@ DEFPY(bmp_connect,
        }
 
        ba = bmp_active_get(bt, hostname, port);
-       if (srcif)
+       if (srcif) {
+               if (ba->ifsrc)
+                       XFREE(MTYPE_TMP, ba->ifsrc);
                ba->ifsrc = XSTRDUP(MTYPE_TMP, srcif);
+       }
        if (min_retry_str)
                ba->minretry = min_retry;
        if (max_retry_str)