forked from Mirror/frr
Merge pull request #15083 from louis-6wind/fix-isis_spftree_del
isisd: fix _isis_spftree_del heap-use-after-free
This commit is contained in:
commit
4e249eb2e4
|
@ -378,6 +378,8 @@ isis_spftree_new(struct isis_area *area, struct lspdb_head *lspdb,
|
||||||
|
|
||||||
static void _isis_spftree_del(struct isis_spftree *spftree)
|
static void _isis_spftree_del(struct isis_spftree *spftree)
|
||||||
{
|
{
|
||||||
|
void *info, *backup_info;
|
||||||
|
|
||||||
hash_clean_and_free(&spftree->prefix_sids, NULL);
|
hash_clean_and_free(&spftree->prefix_sids, NULL);
|
||||||
isis_zebra_rlfa_unregister_all(spftree);
|
isis_zebra_rlfa_unregister_all(spftree);
|
||||||
isis_rlfa_list_clear(spftree);
|
isis_rlfa_list_clear(spftree);
|
||||||
|
@ -391,10 +393,12 @@ static void _isis_spftree_del(struct isis_spftree *spftree)
|
||||||
list_delete(&spftree->sadj_list);
|
list_delete(&spftree->sadj_list);
|
||||||
isis_vertex_queue_free(&spftree->tents);
|
isis_vertex_queue_free(&spftree->tents);
|
||||||
isis_vertex_queue_free(&spftree->paths);
|
isis_vertex_queue_free(&spftree->paths);
|
||||||
isis_route_table_info_free(spftree->route_table->info);
|
info = spftree->route_table->info;
|
||||||
isis_route_table_info_free(spftree->route_table_backup->info);
|
backup_info = spftree->route_table_backup->info;
|
||||||
route_table_finish(spftree->route_table);
|
route_table_finish(spftree->route_table);
|
||||||
route_table_finish(spftree->route_table_backup);
|
route_table_finish(spftree->route_table_backup);
|
||||||
|
isis_route_table_info_free(info);
|
||||||
|
isis_route_table_info_free(backup_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void isis_spftree_del(struct isis_spftree *spftree)
|
void isis_spftree_del(struct isis_spftree *spftree)
|
||||||
|
|
Loading…
Reference in a new issue