summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/telldir.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-05-05 14:05:23 +0000
committerkib <kib@FreeBSD.org>2008-05-05 14:05:23 +0000
commitc697e6f360e231d276258ea22e73c4085eba3af9 (patch)
treee3620d7f991edaa6b2b475aa8d2dae909d6e29ec /lib/libc/gen/telldir.c
parent420af22bc1279dd3fef45a8fd4e575afb086e937 (diff)
downloadFreeBSD-src-c697e6f360e231d276258ea22e73c4085eba3af9.zip
FreeBSD-src-c697e6f360e231d276258ea22e73c4085eba3af9.tar.gz
Do not read away the target directory entry when encountering deleted
files after a seekdir(). The seekdir shall set the position for the next readdir operation. When the _readdir_unlocked() encounters deleted entry, dd_loc is already advanced. Continuing the loop leads to premature read of the target entry. Submitted by: Marc Balmer <mbalmer at openbsd org> Obtained from: OpenBSD MFC after: 2 weeks
Diffstat (limited to 'lib/libc/gen/telldir.c')
-rw-r--r--lib/libc/gen/telldir.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libc/gen/telldir.c b/lib/libc/gen/telldir.c
index 36e261c..c217333 100644
--- a/lib/libc/gen/telldir.c
+++ b/lib/libc/gen/telldir.c
@@ -98,7 +98,7 @@ _seekdir(dirp, loc)
dirp->dd_seek = lp->loc_seek;
dirp->dd_loc = 0;
while (dirp->dd_loc < lp->loc_loc) {
- dp = _readdir_unlocked(dirp);
+ dp = _readdir_unlocked(dirp, 0);
if (dp == NULL)
break;
}
OpenPOWER on IntegriCloud