mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
scan-build: Have clear_pending_onions walk the lists more obviously
As it stands, it relies on the fact that onion_queue_entry_remove will magically remove each onionskin from the right list. This patch changes the logic to be more resilient to possible bugs in onion_queue_entry_remove, and less confusing to static analysis tools.
This commit is contained in:
parent
78bc814c04
commit
1b3bddd013
1 changed files with 4 additions and 2 deletions
|
@ -329,12 +329,14 @@ onion_queue_entry_remove(onion_queue_t *victim)
|
|||
void
|
||||
clear_pending_onions(void)
|
||||
{
|
||||
onion_queue_t *victim;
|
||||
onion_queue_t *victim, *next;
|
||||
int i;
|
||||
for (i=0; i<=MAX_ONION_HANDSHAKE_TYPE; i++) {
|
||||
while ((victim = TOR_TAILQ_FIRST(&ol_list[i]))) {
|
||||
for (victim = TOR_TAILQ_FIRST(&ol_list[i]); victim; victim = next) {
|
||||
next = TOR_TAILQ_NEXT(victim,next);
|
||||
onion_queue_entry_remove(victim);
|
||||
}
|
||||
tor_assert(TOR_TAILQ_EMPTY(&ol_list[i]));
|
||||
}
|
||||
memset(ol_entries, 0, sizeof(ol_entries));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue