]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fs-posix: Fix iterating directories when readdir() returns DT_UNKNOWN
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 6 Feb 2018 10:37:34 +0000 (12:37 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 9 Feb 2018 09:50:13 +0000 (11:50 +0200)
Files were iterated correctly, but directories weren't. This mainly broke
directory iteration with NFS when nordirplus mount option was used.

src/lib-fs/fs-posix.c

index 3f05a07a1e6517f223e3902e8fbc258351e4ab64..5f834de51b6420375d32011865064bffb8ccbbe4 100644 (file)
@@ -844,9 +844,9 @@ static const char *fs_posix_iter_next(struct fs_iter *_iter)
 #ifdef HAVE_DIRENT_D_TYPE
                switch (d->d_type) {
                case DT_UNKNOWN:
-                       if (!fs_posix_iter_want(iter, d->d_name))
-                               break;
-                       /* fall through */
+                       if (fs_posix_iter_want(iter, d->d_name))
+                               return d->d_name;
+                       break;
                case DT_REG:
                case DT_LNK:
                        if ((iter->iter.flags & FS_ITER_FLAG_DIRS) == 0)