mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 21:10:28 +00:00
zebra: fix SEGV on exit or vrf delete
table->info must be free'd last, it's used in rib_unlink(). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
46857efe0d
commit
d24736fa17
@ -217,6 +217,7 @@ zebra_vrf_delete (struct vrf *vrf)
|
|||||||
{
|
{
|
||||||
struct zebra_vrf *zvrf = vrf->info;
|
struct zebra_vrf *zvrf = vrf->info;
|
||||||
struct route_table *table;
|
struct route_table *table;
|
||||||
|
rib_table_info_t *info;
|
||||||
u_int32_t table_id;
|
u_int32_t table_id;
|
||||||
afi_t afi;
|
afi_t afi;
|
||||||
safi_t safi;
|
safi_t safi;
|
||||||
@ -273,8 +274,9 @@ zebra_vrf_delete (struct vrf *vrf)
|
|||||||
for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
|
for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
|
||||||
{
|
{
|
||||||
table = zvrf->table[afi][safi];
|
table = zvrf->table[afi][safi];
|
||||||
XFREE (MTYPE_RIB_TABLE_INFO, table->info);
|
info = table->info;
|
||||||
route_table_finish (table);
|
route_table_finish (table);
|
||||||
|
XFREE (MTYPE_RIB_TABLE_INFO, info);
|
||||||
|
|
||||||
table = zvrf->stable[afi][safi];
|
table = zvrf->stable[afi][safi];
|
||||||
route_table_finish (table);
|
route_table_finish (table);
|
||||||
@ -284,8 +286,9 @@ zebra_vrf_delete (struct vrf *vrf)
|
|||||||
if (zvrf->other_table[afi][table_id])
|
if (zvrf->other_table[afi][table_id])
|
||||||
{
|
{
|
||||||
table = zvrf->other_table[afi][table_id];
|
table = zvrf->other_table[afi][table_id];
|
||||||
XFREE (MTYPE_RIB_TABLE_INFO, table->info);
|
info = table->info;
|
||||||
route_table_finish (table);
|
route_table_finish (table);
|
||||||
|
XFREE (MTYPE_RIB_TABLE_INFO, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
route_table_finish (zvrf->rnh_table[afi]);
|
route_table_finish (zvrf->rnh_table[afi]);
|
||||||
|
Loading…
Reference in New Issue
Block a user