From: Will Thompson Date: Thu, 20 May 2010 15:08:33 +0000 (+0100) Subject: kqueue set_watched_dirs: fix termination condition X-Git-Tag: dbus-1.3.1~22^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82a77d6acb0b484a0f21180ad6b8a9b879a54197;p=thirdparty%2Fdbus.git kqueue set_watched_dirs: fix termination condition num_fds is the number of elements of dirs currently in use. This bug meant that encountering a previously un-watched directory would cause j to increment forever, and so dirs[j] would eventually segfault. (I've checked the corresponding code for inotify, and it's correct. I wonder if some of the duplication could be eliminated.) Thanks to Pablo Martí Gamboa for reporting this issue! --- diff --git a/bus/dir-watch-kqueue.c b/bus/dir-watch-kqueue.c index 4a01b748a..4e436eb13 100644 --- a/bus/dir-watch-kqueue.c +++ b/bus/dir-watch-kqueue.c @@ -169,7 +169,7 @@ bus_set_watched_dirs (BusContext *context, DBusList **directories) */ for (i = 0; new_dirs[i]; i++) { - for (j = 0; i < num_fds; j++) + for (j = 0; j < num_fds; j++) { if (dirs[j] && strcmp (new_dirs[i], dirs[j]) == 0) {