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

Reply via email to