git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] dir.c: avoid stat() in valid_cached_dir()

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Dec 28, 2017, 00:28 UTC
Message-ID
<20171228002807.22388-1-pclouds@gmail.com>

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@gmail.com>
---
 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@mail.gmail.com/
 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;
-- 
2.15.0.320.g0453912d77
Next: Junio C Hamano
Message 1 of 13 in “dir.c: avoid stat() in valid_cached_dir()”
  1. dir.c: avoid stat() in valid_cached_dir()Nguyễn Thái Ngọc Duy, Dec 28, 2017
  2. Junio C HamanoDec 28, 2017
  3. Junio C HamanoDec 28, 2017
  4. Duy NguyenJan 1, 2018
  5. 0/5 untracked cache bug fixesÆvar Arnfjörð Bjarmason, Jan 3, 2018
  6. 1/5 status: add a failing test showing a core.untrackedCache bugÆvar Arnfjörð Bjarmason, Jan 3, 2018
  7. 3/5 dir.c: fix missing dir invalidation in untracked codeÆvar Arnfjörð Bjarmason, Jan 3, 2018
  8. 4/5 update-index doc: note a fixed bug in the untracked cacheÆvar Arnfjörð Bjarmason, Jan 3, 2018
  9. 5/5 dir.c: stop ignoring opendir() error in open_cached_dir()Ævar Arnfjörð Bjarmason, Jan 3, 2018
  10. Duy NguyenJan 7, 2018
  11. 2/5 dir.c: avoid stat() in valid_cached_dir()Ævar Arnfjörð Bjarmason, Jan 3, 2018
  12. Ævar Arnfjörð BjarmasonDec 28, 2017
  13. Duy NguyenJan 2, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.