ospf6d: fix heap uaf

Fix #667

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2017-06-06 15:47:09 +00:00
parent d7d614ae80
commit 7de6a87b55

View File

@ -1621,6 +1621,7 @@ ospf6_intra_brouter_calculation (struct ospf6_area *oa)
zlog_info ("brouter %s disappears via area %s", zlog_info ("brouter %s disappears via area %s",
brouter_name, oa->name); brouter_name, oa->name);
ospf6_route_remove (brouter, oa->ospf6->brouter_table); ospf6_route_remove (brouter, oa->ospf6->brouter_table);
brouter = NULL;
} }
else if (CHECK_FLAG (brouter->flag, OSPF6_ROUTE_ADD) || else if (CHECK_FLAG (brouter->flag, OSPF6_ROUTE_ADD) ||
CHECK_FLAG (brouter->flag, OSPF6_ROUTE_CHANGE)) CHECK_FLAG (brouter->flag, OSPF6_ROUTE_CHANGE))
@ -1644,8 +1645,12 @@ ospf6_intra_brouter_calculation (struct ospf6_area *oa)
/* But re-originate summaries */ /* But re-originate summaries */
ospf6_abr_originate_summary (brouter); ospf6_abr_originate_summary (brouter);
} }
UNSET_FLAG (brouter->flag, OSPF6_ROUTE_ADD);
UNSET_FLAG (brouter->flag, OSPF6_ROUTE_CHANGE); if (brouter)
{
UNSET_FLAG (brouter->flag, OSPF6_ROUTE_ADD);
UNSET_FLAG (brouter->flag, OSPF6_ROUTE_CHANGE);
}
} }
if (IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID (oa->area_id)) if (IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID (oa->area_id))