Package: libkqueue0
Version: 0.9.2-1
Severity: serious
Tags: patch
Hi,
A typo in the code copying kevents from the changelist to the eventlist
in kevent_copyin() leads to events with EV_RECEIPT having a non-zero data
field.
This breaks libdispatch in interesting ways under the right circumstances,
effectively putting a halt to event processing.
Patch attached, replace errno with status when setting the data field.
Thanks,
JB.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.35 (SMP w/2 CPU cores)
Locale: LANG=C, lc_ctype=fr...@euro (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash
Versions of packages libkqueue0 depends on:
ii libc6 2.11.2-5 Embedded GNU C Library: Shared lib
libkqueue0 recommends no packages.
libkqueue0 suggests no packages.
-- no debconf information
diff --git a/src/common/kevent.c b/src/common/kevent.c
index 30bbc0f..c43a31c 100644
--- a/src/common/kevent.c
+++ b/src/common/kevent.c
@@ -219,7 +219,7 @@ kevent_copyin(struct kqueue *kq, const struct kevent *src, int nchanges,
err_path:
if (nevents > 0) {
memcpy(eventlist, src, sizeof(*src));
- eventlist->data = errno;
+ eventlist->data = status;
nevents--;
eventlist++;
nret++;