diff options
| author | Jafar Al-Gharaibeh <jafar@atcorp.com> | 2023-08-31 12:01:15 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-31 12:01:15 -0500 | 
| commit | 77b16f55a29ed740a64cd57a7c2db3683d541455 (patch) | |
| tree | 93276d72368066aa3e4f3951031b731885d737fd | |
| parent | ebc2054b3b7c46e89834b996907858c7cfbdbdd1 (diff) | |
| parent | 98b8d08ca9c443fee79ab3b7563f69d2ae322354 (diff) | |
Merge pull request #14321 from opensourcerouting/fix/backport_530be6a4d089600f1028439ddec420ef651b983b_9.0
ospfd: Prevent use after free( and crash of ospf ) when no router ospf [backport]
| -rw-r--r-- | ospfd/ospfd.c | 39 | 
1 files changed, 19 insertions, 20 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index 51e937f42c..08044d63e5 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -801,25 +801,6 @@ static void ospf_finish_final(struct ospf *ospf)  		ospf_area_free(area);  	} -	/* Cancel all timers. */ -	EVENT_OFF(ospf->t_read); -	EVENT_OFF(ospf->t_write); -	EVENT_OFF(ospf->t_spf_calc); -	EVENT_OFF(ospf->t_ase_calc); -	EVENT_OFF(ospf->t_maxage); -	EVENT_OFF(ospf->t_maxage_walker); -	EVENT_OFF(ospf->t_abr_task); -	EVENT_OFF(ospf->t_abr_fr); -	EVENT_OFF(ospf->t_asbr_check); -	EVENT_OFF(ospf->t_asbr_nssa_redist_update); -	EVENT_OFF(ospf->t_distribute_update); -	EVENT_OFF(ospf->t_lsa_refresher); -	EVENT_OFF(ospf->t_opaque_lsa_self); -	EVENT_OFF(ospf->t_sr_update); -	EVENT_OFF(ospf->t_default_routemap_timer); -	EVENT_OFF(ospf->t_external_aggr); -	EVENT_OFF(ospf->gr_info.t_grace_period); -  	LSDB_LOOP (OPAQUE_AS_LSDB(ospf), rn, lsa)  		ospf_discard_from_db(ospf, ospf->lsdb, lsa);  	LSDB_LOOP (EXTERNAL_LSDB(ospf), rn, lsa) @@ -907,8 +888,26 @@ static void ospf_finish_final(struct ospf *ospf)  		}  	} -	route_table_finish(ospf->rt_aggr_tbl); +	/* Cancel all timers. */ +	EVENT_OFF(ospf->t_read); +	EVENT_OFF(ospf->t_write); +	EVENT_OFF(ospf->t_spf_calc); +	EVENT_OFF(ospf->t_ase_calc); +	EVENT_OFF(ospf->t_maxage); +	EVENT_OFF(ospf->t_maxage_walker); +	EVENT_OFF(ospf->t_abr_task); +	EVENT_OFF(ospf->t_abr_fr); +	EVENT_OFF(ospf->t_asbr_check); +	EVENT_OFF(ospf->t_asbr_nssa_redist_update); +	EVENT_OFF(ospf->t_distribute_update); +	EVENT_OFF(ospf->t_lsa_refresher); +	EVENT_OFF(ospf->t_opaque_lsa_self); +	EVENT_OFF(ospf->t_sr_update); +	EVENT_OFF(ospf->t_default_routemap_timer); +	EVENT_OFF(ospf->t_external_aggr); +	EVENT_OFF(ospf->gr_info.t_grace_period); +	route_table_finish(ospf->rt_aggr_tbl);  	ospf_free_refresh_queue(ospf);  | 
