summaryrefslogtreecommitdiff
path: root/pkgtools/pbulk
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2009-08-23 18:02:04 +0000
committerjoerg <joerg@pkgsrc.org>2009-08-23 18:02:04 +0000
commitb5765f0012482153bc505b3c1722305a03afcdc4 (patch)
treec59f27dde5478f1e30ed093b51c148e7e8b0d82d /pkgtools/pbulk
parentc895415b0635b6b5aca760856b346c1522f2454f (diff)
downloadpkgsrc-b5765f0012482153bc505b3c1722305a03afcdc4.tar.gz
pbulk-base-0.39:
Fix ordering of event handler vs queue modification. This can result in queue corruption or use after free when the master can't handle a request before the next arrives. From Matt Dillon.
Diffstat (limited to 'pkgtools/pbulk')
-rw-r--r--pkgtools/pbulk/files/pbulk/lib/event.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/pkgtools/pbulk/files/pbulk/lib/event.c b/pkgtools/pbulk/files/pbulk/lib/event.c
index 402907a852a..84f3827fb46 100644
--- a/pkgtools/pbulk/files/pbulk/lib/event.c
+++ b/pkgtools/pbulk/files/pbulk/lib/event.c
@@ -1,4 +1,4 @@
-/* $NetBSD: event.c,v 1.5 2009/02/25 19:31:53 joerg Exp $ */
+/* $NetBSD: event.c,v 1.6 2009/08/23 18:02:04 joerg Exp $ */
/*-
* Copyright (c) 2007, 2009 Joerg Sonnenberger <joerg@NetBSD.org>.
@@ -348,11 +348,11 @@ loop:
iter < last_iter && ev && (next = LIST_NEXT(ev, ev_link), 1);
ev = next, ++iter) {
if (iter->revents) {
- (*ev->ev_handler)(ev->ev_fd, ev->ev_arg);
if (!ev->ev_persistent) {
--active_events;
LIST_REMOVE(ev, ev_link);
}
+ (*ev->ev_handler)(ev->ev_fd, ev->ev_arg);
--ret;
}
}