]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix memory leak when creating BMP connection with a source interface
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 19 Dec 2024 08:56:52 +0000 (10:56 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 19 Dec 2024 08:56:52 +0000 (10:56 +0200)
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>
bgpd/bgp_bmp.c

index 3a4364c5f997eb15c825342a9a7e9b135f797c13..5264bea9af85401790d057c88e58a1f428440c3d 100644 (file)
@@ -2630,8 +2630,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)