[PATCH] kqueue set_watched_dirs: fix termination condition

Will Thompson will.thompson at collabora.co.uk
Thu May 20 08:08:33 PDT 2010


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 <pmarti at warp.es> for reporting this issue!
---
 bus/dir-watch-kqueue.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/bus/dir-watch-kqueue.c b/bus/dir-watch-kqueue.c
index 4a01b74..4e436eb 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)
             {
-- 
1.7.0.5


--------------040007050108000702070600--


More information about the dbus mailing list