From 643b06665fbd514e0b43fd523e05b09534553612 Mon Sep 17 00:00:00 2001 From: des Date: Sun, 6 Oct 2002 17:43:04 +0000 Subject: Avoid referencing a removed (and freed) queue entry. This partially reverts revision 1.101 (which did not introduce the bug but made it harder to fix) PR: misc/40363 Submitted by: David Dunham MFC after: 2 weeks --- usr.sbin/syslogd/syslogd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index c3887ac..6afc3ee 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1813,7 +1813,7 @@ static void markit(void) { struct filed *f; - dq_t q; + dq_t q, next; now = time((time_t *)NULL); MarkSeq += TIMERINTVL; @@ -1834,7 +1834,9 @@ markit(void) } /* Walk the dead queue, and see if we should signal somebody. */ - TAILQ_FOREACH(q, &deadq_head, dq_entries) { + for (q = TAILQ_FIRST(&deadq_head); q != NULL; q = next) { + next = TAILQ_NEXT(q, dq_entries); + switch (q->dq_timeout) { case 0: /* Already signalled once, try harder now. */ -- cgit v1.1