mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 22:09:48 +00:00
libs: fix race in pcep lib
Fix a race in the libpcep timer code; reported by coverity. Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
parent
7c94e3d606
commit
cdcb405119
@ -457,10 +457,17 @@ void pceplib_external_timer_expire_handler(void *data)
|
||||
}
|
||||
|
||||
pcep_timer *timer = (pcep_timer *)data;
|
||||
|
||||
pthread_mutex_lock(&timers_context_->timer_list_lock);
|
||||
ordered_list_node *timer_node =
|
||||
ordered_list_find2(timers_context_->timer_list, timer,
|
||||
timer_list_node_timer_ptr_compare);
|
||||
|
||||
/* Remove timer from list */
|
||||
if (timer_node)
|
||||
ordered_list_remove_node2(timers_context_->timer_list,
|
||||
timer_node);
|
||||
|
||||
pthread_mutex_unlock(&timers_context_->timer_list_lock);
|
||||
|
||||
/* Cannot continue if the timer does not exist */
|
||||
@ -474,9 +481,5 @@ void pceplib_external_timer_expire_handler(void *data)
|
||||
|
||||
timers_context_->expire_handler(timer->data, timer->timer_id);
|
||||
|
||||
pthread_mutex_lock(&timers_context_->timer_list_lock);
|
||||
ordered_list_remove_node2(timers_context_->timer_list, timer_node);
|
||||
pthread_mutex_unlock(&timers_context_->timer_list_lock);
|
||||
|
||||
pceplib_free(PCEPLIB_INFRA, timer);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user