Avoid the double-free (first in fts_read, second in fts_close) that

would occur when an `active' directory is made inaccessible (e.g.,
via chmod a-x) during a traversal.

(fts_read): After a failed fchdir, update sp->fts_cur
before returning.  Reproduce this failure by
mkdir -p a/b; cd a; chmod a-x . b
Reported by Stavros Passas.
This commit is contained in:
Jim Meyering 2006-01-10 11:55:13 +00:00
parent f26f53be9c
commit 58e925ce5f

View File

@ -522,6 +522,7 @@ next: tmp = p;
if (p->fts_level == FTS_ROOTLEVEL) {
if (FCHDIR(sp, sp->fts_rfd)) {
SET(FTS_STOP);
sp->fts_cur = p;
return (NULL);
}
fts_load(sp, p);