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

Re: [PATCH 3/4] real_path_if_valid(): remove unsafe API

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 6, 2020, 22:14 UTC
Message-ID
<xmqqzhct167f.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<59af49ad9f6b2ffc87e350f9bc00d233f2a9010f.1583521396.git.gitgitgadget@gmail.com>

"Alexandr Miloslavskiy via GitGitGadget" <gitgitgadget@gmail.com> writes:

Show 26 quoted lines
> diff --git a/sha1-file.c b/sha1-file.c
> index 616886799e5..f2b24654895 100644
> --- a/sha1-file.c
> +++ b/sha1-file.c
> @@ -676,20 +676,15 @@ void add_to_alternates_memory(const char *reference)
>  char *compute_alternate_path(const char *path, struct strbuf *err)
>  {
>  	char *ref_git = NULL;
> -	const char *repo, *ref_git_s;
> +	const char *repo;
>  	int seen_error = 0;
>  
> -	ref_git_s = real_path_if_valid(path);
> -	if (!ref_git_s) {
> +	ref_git = real_pathdup(path, 0);
> +	if (!ref_git) {
>  		seen_error = 1;
>  		strbuf_addf(err, _("path '%s' does not exist"), path);
>  		goto out;
> -	} else
> -		/*
> -		 * Beware: read_gitfile(), real_path() and mkpath()
> -		 * return static buffer
> -		 */
> -		ref_git = xstrdup(ref_git_s);
> +	}

It is amusing to see that rewriting not to use the unsafe function makes the code a lot easier to follow ;-)

Previous: Alexandr Miloslavskiy via GitGitGadgetNext: Alexandr Miloslavskiy via GitGitGadget
Message 12 of 17 in “Fix bugs related to real_path()”
  1. 0/4 Fix bugs related to real_path()Alexandr Miloslavskiy via GitGitGadget, Mar 6, 2020
  2. 1/4 set_git_dir: fix crash when used with real_path()Alexandr Miloslavskiy via GitGitGadget, Mar 6, 2020
  3. Junio C HamanoMar 6, 2020
  4. Alexandr MiloslavskiyMar 6, 2020
  5. 4/4 get_superproject_working_tree(): return strbufAlexandr Miloslavskiy via GitGitGadget, Mar 6, 2020
  6. Junio C HamanoMar 6, 2020
  7. Alexandr MiloslavskiyMar 6, 2020
  8. 2/4 real_path: remove unsafe APIAlexandr Miloslavskiy via GitGitGadget, Mar 6, 2020
  9. Junio C HamanoMar 6, 2020
  10. Alexandr MiloslavskiyMar 6, 2020
  11. 3/4 real_path_if_valid(): remove unsafe APIAlexandr Miloslavskiy via GitGitGadget, Mar 6, 2020
  12. Junio C HamanoMar 6, 2020
  13. 0/4 Fix bugs related to real_path()Alexandr Miloslavskiy via GitGitGadget, Mar 10, 2020
  14. 4/4 get_superproject_working_tree(): return strbufAlexandr Miloslavskiy via GitGitGadget, Mar 10, 2020
  15. 3/4 real_path_if_valid(): remove unsafe APIAlexandr Miloslavskiy via GitGitGadget, Mar 10, 2020
  16. 2/4 real_path: remove unsafe APIAlexandr Miloslavskiy via GitGitGadget, Mar 10, 2020
  17. 1/4 set_git_dir: fix crash when used with real_path()Alexandr Miloslavskiy via GitGitGadget, Mar 10, 2020

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.