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

RE: [BUG] ls-files showing deleted files (unchecked lstat return value)

From
Randall S. Becker <rsbecker@nexbridge.com>
Date
Feb 17, 2019, 15:59 UTC
Message-ID
<000001d4c6d9$bceb5810$36c20830$@nexbridge.com>
In-Reply-To
<1ff48830-f3de-11f4-9014-c20eb3890c21@grammatech.com>
On February 17, 2019 8:50, Joe Ranieri wrote:
> "git ls-files -m" can show deleted files, despite -d not having been specified.
> This is due to ls-files.c's show_files function calling lstat but not checking the
> return value before calling ie_modified with the uninitialized stat structure.
What version of git are you looking scanning? Commit 8989e1950a (2.21.0-rc1) has the following:

err = lstat(fullname.buf, &st); if (show_deleted && err) ...

You may be correct that the following check:
 if (show_modified && ie_modified(repo->index, ce, &st, 0
may need to include !err. Is that your conclusion? Is there a test case you have to demonstrate this that I can include in the test suite?
The patch would be (subject to my bad mailer messing it up):
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 29a8762d46..fc21f47954 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -348,7 +348,7 @@ static void show_files(struct repository *repo, struct dir_struct *dir)
                        err = lstat(fullname.buf, &st);
                        if (show_deleted && err)
                                show_ce(repo, dir, ce, fullname.buf, tag_removed);
-                       if (show_modified && ie_modified(repo->index, ce, &st, 0))
+                       if (show_modified && !err && ie_modified(repo->index, ce, &st, 0))
                                show_ce(repo, dir, ce, fullname.buf, tag_modified);
                }
        }

Regards,
Randall

-- Brief whoami:
 NonStop developer since approximately 211288444200000000
 UNIX developer since approximately 421664400
-- In my real life, I talk too much.
Previous: Joe RanieriNext: Joe Ranieri
Message 2 of 6 in “[BUG] ls-files showing deleted files (unchecked lstat return value)”
  1. Joe RanieriFeb 17, 2019
  2. Randall S. BeckerFeb 17, 2019
  3. Joe RanieriFeb 18, 2019
  4. SZEDER GáborFeb 18, 2019
  5. Randall S. BeckerFeb 18, 2019
  6. Junio C HamanoFeb 20, 2019

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.