mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-03 17:07:05 +00:00
bgpd: fix srv6 memory leak detection
The asan memory leak has been detected: > Direct leak of 16 byte(s) in 1 object(s) allocated from: > #0 0x7f9066dadd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) > #1 0x7f9066779b5d in qcalloc lib/memory.c:105 > #2 0x556d6ca527c2 in vpn_leak_zebra_vrf_sid_update_per_af bgpd/bgp_mplsvpn.c:389 > #3 0x556d6ca530e1 in vpn_leak_zebra_vrf_sid_update bgpd/bgp_mplsvpn.c:451 > #4 0x556d6ca64b3b in vpn_leak_postchange bgpd/bgp_mplsvpn.h:311 > #5 0x556d6ca64b3b in vpn_leak_postchange_all bgpd/bgp_mplsvpn.c:3751 > #6 0x556d6cb9f116 in bgp_zebra_process_srv6_locator_chunk bgpd/bgp_zebra.c:3337 > #7 0x7f906685a6b6 in zclient_read lib/zclient.c:4490 > #8 0x7f9066826a32 in event_call lib/event.c:2011 > #9 0x7f906675c444 in frr_run lib/libfrr.c:1217 > #10 0x556d6c980d52 in main bgpd/bgp_main.c:545 > #11 0x7f9065784c86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86) Fix this by freeing the previous memory chunk. Fixes:b72c9e1475
("bgpd: cli for SRv6 SID alloc to redirect to vrf (step4)") Fixes:527588aa78
("bgpd: add support for per-VRF SRv6 SID") Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> (cherry picked from commiteea8a8ae24
)
This commit is contained in:
parent
13f8f5eff4
commit
693487c68d
@ -388,6 +388,9 @@ void vpn_leak_zebra_vrf_sid_update_per_af(struct bgp *bgp, afi_t afi)
|
||||
|
||||
tovpn_sid_ls = XCALLOC(MTYPE_BGP_SRV6_SID, sizeof(struct in6_addr));
|
||||
*tovpn_sid_ls = *tovpn_sid;
|
||||
if (bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent)
|
||||
XFREE(MTYPE_BGP_SRV6_SID,
|
||||
bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent);
|
||||
bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent = tovpn_sid_ls;
|
||||
}
|
||||
|
||||
@ -435,6 +438,8 @@ void vpn_leak_zebra_vrf_sid_update_per_vrf(struct bgp *bgp)
|
||||
|
||||
tovpn_sid_ls = XCALLOC(MTYPE_BGP_SRV6_SID, sizeof(struct in6_addr));
|
||||
*tovpn_sid_ls = *tovpn_sid;
|
||||
if (bgp->tovpn_zebra_vrf_sid_last_sent)
|
||||
XFREE(MTYPE_BGP_SRV6_SID, bgp->tovpn_zebra_vrf_sid_last_sent);
|
||||
bgp->tovpn_zebra_vrf_sid_last_sent = tovpn_sid_ls;
|
||||
}
|
||||
|
||||
@ -482,6 +487,7 @@ void vpn_leak_zebra_vrf_sid_withdraw_per_af(struct bgp *bgp, afi_t afi)
|
||||
bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC, NULL);
|
||||
XFREE(MTYPE_BGP_SRV6_SID,
|
||||
bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent);
|
||||
bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -508,6 +514,7 @@ void vpn_leak_zebra_vrf_sid_withdraw_per_vrf(struct bgp *bgp)
|
||||
bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC,
|
||||
NULL);
|
||||
XFREE(MTYPE_BGP_SRV6_SID, bgp->tovpn_zebra_vrf_sid_last_sent);
|
||||
bgp->tovpn_zebra_vrf_sid_last_sent = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user