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

[PATCH 0/7] Fix some bugs in abspath.c

From
mhagger@alum.mit.edu <mhagger@alum.mit.edu>
Date
Sep 4, 2012, 08:14 UTC
Message-ID
<1346746470-23127-1-git-send-email-mhagger@alum.mit.edu>
From: Michael Haggerty <mhagger@alum.mit.edu>

I really just wanted to tidy up filter_refs(), but I've been sucked into a cascade of recursive yak shaving. This is my first attempt to pop the yak stack.

I want to use real_path() for making the handling of GIT_CEILING_DIRECTORIES more robust, but I noticed that it is broken for some cases that will be important in this context. This patch series adds some new tests of that function and fixes the ones that are broken, including a similar breakage in absolute_path(). It applies to the current master.

Please note that both absolute_path("") and real_path("") used to return the current directory followed by a slash. I believe that this was a bug, and that it is more appropriate for both functions to reject the empty string. The evidence is as follows:

* If this were intended behavior, presumably the return value would
  *not* have a trailing slash.
* I couldn't find any callers that appeared to depend on the old
  behavior.
* The test suite runs without errors after the change.

But I didn't do a thorough code review to ensure that no callers ever rely on the old behavior. The most likely scenario would be if one of these functions were used to parse something like $PATH, where the empty string denotes the current directory, but I didn't see any callers that seemed to be doing anything like this.

Michael Haggerty (7):
  t0000: verify that absolute_path() fails if passed the empty string
  absolute_path(): reject the empty string
  t0000: verify that real_path() fails if passed the empty string
  real_path(): reject the empty string
  t0000: verify that real_path() works correctly with absolute paths
  real_path(): properly handle nonexistent top-level paths
  t0000: verify that real_path() removes extra slashes
 abspath.c        | 12 ++++++++++--
 t/t0000-basic.sh | 31 ++++++++++++++++++++++++++++++-
 2 files changed, 40 insertions(+), 3 deletions(-)
-- 
1.7.11.3
Next: mhagger@alum.mit.edu
Message 1 of 25 in “Fix some bugs in abspath.c”
  1. 0/7 Fix some bugs in abspath.cmhagger@alum.mit.edu, Sep 4, 2012
  2. 1/7 t0000: verify that absolute_path() fails if passed the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  3. 2/7 absolute_path(): reject the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  4. 3/7 t0000: verify that real_path() fails if passed the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  5. 4/7 real_path(): reject the empty stringmhagger@alum.mit.edu, Sep 4, 2012
  6. 5/7 t0000: verify that real_path() works correctly with absolute pathsmhagger@alum.mit.edu, Sep 4, 2012
  7. Johannes SixtSep 5, 2012
  8. Michael HaggertySep 6, 2012
  9. Junio C HamanoSep 6, 2012
  10. Michael HaggertySep 9, 2012
  11. Junio C HamanoSep 9, 2012
  12. Junio C HamanoSep 9, 2012
  13. 6/7 real_path(): properly handle nonexistent top-level pathsmhagger@alum.mit.edu, Sep 4, 2012
  14. 7/7 t0000: verify that real_path() removes extra slashesmhagger@alum.mit.edu, Sep 4, 2012
  15. Junio C HamanoSep 4, 2012
  16. Nguyen Thai Ngoc DuySep 5, 2012
  17. Junio C HamanoSep 6, 2012
  18. Nguyen Thai Ngoc DuySep 6, 2012
  19. Junio C HamanoSep 6, 2012
  20. Nguyen Thai Ngoc DuySep 7, 2012
  21. Johannes SixtSep 5, 2012
  22. Michael HaggertySep 6, 2012
  23. Junio C HamanoSep 4, 2012
  24. Junio C HamanoSep 4, 2012
  25. Nguyen Thai Ngoc DuySep 5, 2012

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.