diff options
author | kib <kib@FreeBSD.org> | 2008-05-05 14:05:23 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2008-05-05 14:05:23 +0000 |
commit | c697e6f360e231d276258ea22e73c4085eba3af9 (patch) | |
tree | e3620d7f991edaa6b2b475aa8d2dae909d6e29ec /lib/libc/gen/telldir.c | |
parent | 420af22bc1279dd3fef45a8fd4e575afb086e937 (diff) | |
download | FreeBSD-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.c | 2 |
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; } |