forked from Mirror/frr
isisd: fix asla memory leak
> ==713776==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 120 byte(s) in 1 object(s) allocated from:
> #0 0x7fdfcbeb4a57 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
> #1 0x7fdfcb86f8dd in qcalloc lib/memory.c:105
> #2 0x55ce707739b6 in isis_tlvs_find_alloc_asla isisd/isis_tlvs.c:8500
> #3 0x55ce7072fae0 in isis_link_params_update_asla isisd/isis_te.c:191
> #4 0x55ce70733881 in isis_link_params_update isisd/isis_te.c:499
> #5 0x55ce70693f2a in isis_circuit_up isisd/isis_circuit.c:776
> #6 0x55ce7069a120 in isis_csm_state_change isisd/isis_csm.c:135
> #7 0x55ce7068dd80 in isis_circuit_enable isisd/isis_circuit.c:79
> #8 0x55ce70699346 in isis_ifp_create isisd/isis_circuit.c:1618
> #9 0x7fdfcb81f47f in hook_call_if_real lib/if.c:55
> #10 0x7fdfcb82056e in if_new_via_zapi lib/if.c:188
> #11 0x7fdfcb9d17da in zclient_interface_add lib/zclient.c:2706
> #12 0x7fdfcb9df842 in zclient_read lib/zclient.c:4843
> #13 0x7fdfcb97798e in event_call lib/event.c:2011
> #14 0x7fdfcb842ff1 in frr_run lib/libfrr.c:1216
> #15 0x55ce7067cbf2 in main isisd/isis_main.c:360
> #16 0x7fdfcb229d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> Indirect leak of 8 byte(s) in 1 object(s) allocated from:
> #0 0x7fdfcbeb4a57 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
> #1 0x7fdfcb86f8dd in qcalloc lib/memory.c:105
> #2 0x7fdfcb79a7b7 in admin_group_init lib/admin_group.c:186
> #3 0x55ce707739ca in isis_tlvs_find_alloc_asla isisd/isis_tlvs.c:8501
> #4 0x55ce7072fae0 in isis_link_params_update_asla isisd/isis_te.c:191
> #5 0x55ce70733881 in isis_link_params_update isisd/isis_te.c:499
> #6 0x55ce70693f2a in isis_circuit_up isisd/isis_circuit.c:776
> #7 0x55ce7069a120 in isis_csm_state_change isisd/isis_csm.c:135
> #8 0x55ce7068dd80 in isis_circuit_enable isisd/isis_circuit.c:79
> #9 0x55ce70699346 in isis_ifp_create isisd/isis_circuit.c:1618
> #10 0x7fdfcb81f47f in hook_call_if_real lib/if.c:55
> #11 0x7fdfcb82056e in if_new_via_zapi lib/if.c:188
> #12 0x7fdfcb9d17da in zclient_interface_add lib/zclient.c:2706
> #13 0x7fdfcb9df842 in zclient_read lib/zclient.c:4843
> #14 0x7fdfcb97798e in event_call lib/event.c:2011
> #15 0x7fdfcb842ff1 in frr_run lib/libfrr.c:1216
> #16 0x55ce7067cbf2 in main isisd/isis_main.c:360
> #17 0x7fdfcb229d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
PR: 95719
Fixes: 5749ac83a8
("isisd: add ASLA support")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
parent
dc37bff8c0
commit
fe2a07aea4
|
@ -129,6 +129,7 @@ static int unpack_tlvs(enum isis_tlv_context context, size_t avail_len,
|
|||
struct stream *stream, struct sbuf *log, void *dest,
|
||||
int indent, bool *unpacked_known_tlvs);
|
||||
static void isis_free_subsubtlvs(struct isis_subsubtlvs *subsubtlvs);
|
||||
static void isis_tlvs_del_asla_free(void *arg);
|
||||
|
||||
/* For tests/isisd, TLV text requires ipv4-unicast instead of standard */
|
||||
static const char *isis_mtid2str_fake(uint16_t mtid)
|
||||
|
@ -147,6 +148,7 @@ struct isis_ext_subtlvs *isis_alloc_ext_subtlvs(void)
|
|||
init_item_list(&ext->adj_sid);
|
||||
init_item_list(&ext->lan_sid);
|
||||
ext->aslas = list_new();
|
||||
ext->aslas->del = isis_tlvs_del_asla_free;
|
||||
|
||||
init_item_list(&ext->srv6_endx_sid);
|
||||
init_item_list(&ext->srv6_lan_endx_sid);
|
||||
|
@ -8136,12 +8138,19 @@ void isis_tlvs_del_srv6_lan_endx_sid(struct isis_ext_subtlvs *exts,
|
|||
UNSET_SUBTLV(exts, EXT_SRV6_LAN_ENDX_SID);
|
||||
}
|
||||
|
||||
static void isis_tlvs_del_asla_free(void *arg)
|
||||
{
|
||||
struct isis_asla_subtlvs *asla = arg;
|
||||
|
||||
admin_group_term(&asla->ext_admin_group);
|
||||
XFREE(MTYPE_ISIS_SUBTLV, asla);
|
||||
}
|
||||
|
||||
void isis_tlvs_del_asla_flex_algo(struct isis_ext_subtlvs *ext,
|
||||
struct isis_asla_subtlvs *asla)
|
||||
{
|
||||
admin_group_term(&asla->ext_admin_group);
|
||||
listnode_delete(ext->aslas, asla);
|
||||
XFREE(MTYPE_ISIS_SUBTLV, asla);
|
||||
isis_tlvs_del_asla_free(asla);
|
||||
}
|
||||
|
||||
struct isis_asla_subtlvs *
|
||||
|
|
Loading…
Reference in a new issue