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

[PATCH 2/3] strbuf: set errno to 0 after strbuf_getcwd

From
Kyle Lippincott via GitGitGadget <gitgitgadget@gmail.com>
Date
Aug 2, 2024, 04:10 UTC
Message-ID
<0ed09e9abb85e73a80d044c1ddaed303517752ac.1722571853.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1756.git.git.1722571853.gitgitgadget@gmail.com>
From: Kyle Lippincott <spectral@google.com>

If the loop executes more than once due to cwd being longer than 128 bytes, then `errno = ERANGE` might persist outside of this function. This technically shouldn't be a problem, as all locations where the value in `errno` is tested should either (a) call a function that's guaranteed to set `errno` to 0 on success, or (b) set `errno` to 0 prior to calling the function that only conditionally sets errno, such as the `strtod` function. In the case of functions in category (b), it's easy to forget to do that.

Set `errno = 0;` prior to exiting from `strbuf_getcwd` successfully. This matches the behavior in functions like `run_transaction_hook` (refs.c:2176) and `read_ref_internal` (refs/files-backend.c:564).

Signed-off-by: Kyle Lippincott <spectral@google.com>
---
 strbuf.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/strbuf.c b/strbuf.c
index 3d2189a7f64..b94ef040ab0 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -601,6 +601,7 @@ int strbuf_getcwd(struct strbuf *sb)
 		strbuf_grow(sb, guessed_len);
 		if (getcwd(sb->buf, sb->alloc)) {
 			strbuf_setlen(sb, strlen(sb->buf));
+			errno = 0;
 			return 0;
 		}
 
-- 
gitgitgadget
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 29 in “Small fixes for issues detected during internal CI runs”
  1. 0/3 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 2, 2024
  2. 1/3 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 2, 2024
  3. Patrick SteinhardtAug 2, 2024
  4. Kyle LippincottAug 2, 2024
  5. Junio C HamanoAug 2, 2024
  6. 2/3 strbuf: set errno to 0 after strbuf_getcwdKyle Lippincott via GitGitGadget, Aug 2, 2024
  7. Junio C HamanoAug 2, 2024
  8. Kyle LippincottAug 2, 2024
  9. 3/3 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 2, 2024
  10. Junio C HamanoAug 2, 2024
  11. 0/3 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 2, 2024
  12. 1/3 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 2, 2024
  13. Junio C HamanoAug 2, 2024
  14. 2/3 strbuf: set errno to 0 after strbuf_getcwdKyle Lippincott via GitGitGadget, Aug 2, 2024
  15. Junio C HamanoAug 2, 2024
  16. Eric SunshineAug 2, 2024
  17. Junio C HamanoAug 5, 2024
  18. Patrick SteinhardtAug 6, 2024
  19. Kyle LippincottAug 6, 2024
  20. Kyle LippincottAug 2, 2024
  21. Kyle LippincottAug 5, 2024
  22. 3/3 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 2, 2024
  23. Junio C HamanoAug 2, 2024
  24. Kyle LippincottAug 3, 2024
  25. Junio C HamanoAug 3, 2024
  26. 0/2 Small fixes for issues detected during internal CI runsKyle Lippincott via GitGitGadget, Aug 5, 2024
  27. 1/2 set errno=0 before strtoX callsKyle Lippincott via GitGitGadget, Aug 5, 2024
  28. 2/2 t6421: fix test to work when repo dir contains d0Kyle Lippincott via GitGitGadget, Aug 5, 2024
  29. Junio C HamanoAug 5, 2024

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.