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

Re: [PATCH 2/2] multi-pack-index: use --object-dir real path

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 21, 2022, 20:28 UTC
Message-ID
<xmqqy1zyfaev.fsf@gitster.g>
In-Reply-To
<936e7f12-362d-3303-ddf4-5b40f17a0b9e@github.com>
Victoria Dye <vdye@github.com> writes:
Show 27 quoted lines
>> +static void normalize_object_dir(void)
>> +{
>> +	if (!opts.object_dir)
>> +		opts.object_dir = get_object_directory();
>> +	else
>> +		opts.object_dir = real_pathdup(opts.object_dir, 1);
>> +}
>> +
>
> Rather than copy the 'normalize_object_dir()' calls to every subcommand, you
> could "centralize" this by making the 'object_dir' option an 'OPT_CALLBACK'
> option, something like:
>
> static struct option common_opts[] = {
> 	OPT_CALLBACK(0, "object-dir", &opts.object_dir, N_("file"),
> 		     N_("object directory containing set of packfile and pack-index pairs"),
> 		     normalize_object_dir),
> 	OPT_END(),
> };
>
> It would require changing the function signature of 'normalize_object_dir'
> to match what's shown in 'Documentation/technical/api-parse-options.txt',
> and it potentially needs prefix handling similar to what's done in
> parse-options.c:get_value() (which internally calls 'fix_filename()' for
> filename opts), but I think it's probably worth reducing duplication here
> and avoiding the need to add 'normalize_object_dir()' to any new subcommand
> in the future.
Good suggestion.  Thanks, both, for taking care of this.

Are there other places that we take end-user input and treat it as a pathname without necessary normalization, I wonder. The codepath fixed by this series is relatively new, and I am not surprised such a bug was still there and hopefully it was an isolated remaining bug.

Previous: Derrick StoleeNext: Derrick Stolee via GitGitGadget
Message 6 of 11 in “multi-pack-index: use real paths for --object-dir”
  1. 0/2 multi-pack-index: use real paths for --object-dirDerrick Stolee via GitGitGadget, Apr 21, 2022
  2. 1/2 midx: use real paths in lookup_multi_pack_index()Derrick Stolee via GitGitGadget, Apr 21, 2022
  3. 2/2 multi-pack-index: use --object-dir real pathDerrick Stolee via GitGitGadget, Apr 21, 2022
  4. Victoria DyeApr 21, 2022
  5. Derrick StoleeApr 21, 2022
  6. Junio C HamanoApr 21, 2022
  7. 0/3 multi-pack-index: use real paths for --object-dirDerrick Stolee via GitGitGadget, Apr 25, 2022
  8. 1/3 midx: use real paths in lookup_multi_pack_index()Derrick Stolee via GitGitGadget, Apr 25, 2022
  9. 2/3 multi-pack-index: use --object-dir real pathDerrick Stolee via GitGitGadget, Apr 25, 2022
  10. Junio C HamanoApr 25, 2022
  11. 3/3 cache: use const char * for get_object_directory()Derrick Stolee via GitGitGadget, Apr 25, 2022

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.