On Thu, Dec 28 2017, Nguyễn Thái Ngọc Duy jotted: > stat() may follow a symlink and return stat data of the link's target > instead of the link itself. We are concerned about the link itself. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- > I noticed this while looking at the untracked cache bug [1] but > because it's not directly related to that bug, I'm submitting it > separately here. > > [1] https://public-inbox.org/git/CACsJy8AmbKSp0mDLRaDCWn45veeNc03B-Gq8r8PQPrDt9bM_EA@xxxxxxxxxxxxxx/ I'm slowly trying to piece together a re-submission of this whole series, if this is a bug and not just an optimziation shouldn't there be some test case that demonstrates this bug? > dir.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/dir.c b/dir.c > index 7c4b45e30e..edcb7bb462 100644 > --- a/dir.c > +++ b/dir.c > @@ -1809,7 +1809,7 @@ static int valid_cached_dir(struct dir_struct *dir, > */ > refresh_fsmonitor(istate); > if (!(dir->untracked->use_fsmonitor && untracked->valid)) { > - if (stat(path->len ? path->buf : ".", &st)) { > + if (lstat(path->len ? path->buf : ".", &st)) { > invalidate_directory(dir->untracked, untracked); > memset(&untracked->stat_data, 0, sizeof(untracked->stat_data)); > return 0;