Skip to content

Commit fe2a07a

Browse files
committed
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 > FRRouting#4 0x55ce70733881 in isis_link_params_update isisd/isis_te.c:499 > FRRouting#5 0x55ce70693f2a in isis_circuit_up isisd/isis_circuit.c:776 > FRRouting#6 0x55ce7069a120 in isis_csm_state_change isisd/isis_csm.c:135 > FRRouting#7 0x55ce7068dd80 in isis_circuit_enable isisd/isis_circuit.c:79 > FRRouting#8 0x55ce70699346 in isis_ifp_create isisd/isis_circuit.c:1618 > FRRouting#9 0x7fdfcb81f47f in hook_call_if_real lib/if.c:55 > FRRouting#10 0x7fdfcb82056e in if_new_via_zapi lib/if.c:188 > FRRouting#11 0x7fdfcb9d17da in zclient_interface_add lib/zclient.c:2706 > FRRouting#12 0x7fdfcb9df842 in zclient_read lib/zclient.c:4843 > FRRouting#13 0x7fdfcb97798e in event_call lib/event.c:2011 > FRRouting#14 0x7fdfcb842ff1 in frr_run lib/libfrr.c:1216 > FRRouting#15 0x55ce7067cbf2 in main isisd/isis_main.c:360 > FRRouting#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 > FRRouting#4 0x55ce7072fae0 in isis_link_params_update_asla isisd/isis_te.c:191 > FRRouting#5 0x55ce70733881 in isis_link_params_update isisd/isis_te.c:499 > FRRouting#6 0x55ce70693f2a in isis_circuit_up isisd/isis_circuit.c:776 > FRRouting#7 0x55ce7069a120 in isis_csm_state_change isisd/isis_csm.c:135 > FRRouting#8 0x55ce7068dd80 in isis_circuit_enable isisd/isis_circuit.c:79 > FRRouting#9 0x55ce70699346 in isis_ifp_create isisd/isis_circuit.c:1618 > FRRouting#10 0x7fdfcb81f47f in hook_call_if_real lib/if.c:55 > FRRouting#11 0x7fdfcb82056e in if_new_via_zapi lib/if.c:188 > FRRouting#12 0x7fdfcb9d17da in zclient_interface_add lib/zclient.c:2706 > FRRouting#13 0x7fdfcb9df842 in zclient_read lib/zclient.c:4843 > FRRouting#14 0x7fdfcb97798e in event_call lib/event.c:2011 > FRRouting#15 0x7fdfcb842ff1 in frr_run lib/libfrr.c:1216 > FRRouting#16 0x55ce7067cbf2 in main isisd/isis_main.c:360 > FRRouting#17 0x7fdfcb229d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 PR: 95719 Fixes: 5749ac8 ("isisd: add ASLA support") Signed-off-by: Louis Scalbert <[email protected]>
1 parent dc37bff commit fe2a07a

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

isisd/isis_tlvs.c

+11-2
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ static int unpack_tlvs(enum isis_tlv_context context, size_t avail_len,
129129
struct stream *stream, struct sbuf *log, void *dest,
130130
int indent, bool *unpacked_known_tlvs);
131131
static void isis_free_subsubtlvs(struct isis_subsubtlvs *subsubtlvs);
132+
static void isis_tlvs_del_asla_free(void *arg);
132133

133134
/* For tests/isisd, TLV text requires ipv4-unicast instead of standard */
134135
static const char *isis_mtid2str_fake(uint16_t mtid)
@@ -147,6 +148,7 @@ struct isis_ext_subtlvs *isis_alloc_ext_subtlvs(void)
147148
init_item_list(&ext->adj_sid);
148149
init_item_list(&ext->lan_sid);
149150
ext->aslas = list_new();
151+
ext->aslas->del = isis_tlvs_del_asla_free;
150152

151153
init_item_list(&ext->srv6_endx_sid);
152154
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,
81368138
UNSET_SUBTLV(exts, EXT_SRV6_LAN_ENDX_SID);
81378139
}
81388140

8141+
static void isis_tlvs_del_asla_free(void *arg)
8142+
{
8143+
struct isis_asla_subtlvs *asla = arg;
8144+
8145+
admin_group_term(&asla->ext_admin_group);
8146+
XFREE(MTYPE_ISIS_SUBTLV, asla);
8147+
}
8148+
81398149
void isis_tlvs_del_asla_flex_algo(struct isis_ext_subtlvs *ext,
81408150
struct isis_asla_subtlvs *asla)
81418151
{
8142-
admin_group_term(&asla->ext_admin_group);
81438152
listnode_delete(ext->aslas, asla);
8144-
XFREE(MTYPE_ISIS_SUBTLV, asla);
8153+
isis_tlvs_del_asla_free(asla);
81458154
}
81468155

81478156
struct isis_asla_subtlvs *

0 commit comments

Comments
 (0)