mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 12:39:21 +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;
|
pcep_timer *timer = (pcep_timer *)data;
|
||||||
|
|
||||||
pthread_mutex_lock(&timers_context_->timer_list_lock);
|
pthread_mutex_lock(&timers_context_->timer_list_lock);
|
||||||
ordered_list_node *timer_node =
|
ordered_list_node *timer_node =
|
||||||
ordered_list_find2(timers_context_->timer_list, timer,
|
ordered_list_find2(timers_context_->timer_list, timer,
|
||||||
timer_list_node_timer_ptr_compare);
|
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);
|
pthread_mutex_unlock(&timers_context_->timer_list_lock);
|
||||||
|
|
||||||
/* Cannot continue if the timer does not exist */
|
/* 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);
|
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);
|
pceplib_free(PCEPLIB_INFRA, timer);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user