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++;