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

Re: [PATCH v4] pager: fix crash when pager program doesn't exist

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 26, 2021, 06:23 UTC
Message-ID
<xmqqbl27a116.fsf@gitster.g>
In-Reply-To
<20211125000239.2336-1-ematsumiya@suse.de>
Enzo Matsumiya <ematsumiya@suse.de> writes:
Show 28 quoted lines
> When prepare_cmd() fails for, e.g., pager process setup,
> child_process_clear() frees the memory in pager_process.args, but .argv
> was pointed to pager_process.args.v earlier in start_command(), so it's
> now a dangling pointer.
>
> setup_pager() is then called a second time, from cmd_log_init_finish()
> in this case, and any further operations using its .argv, e.g. strvec_*,
> will use the dangling pointer and eventually crash. According to trivial
> tests, setup_pager() is not called twice if the first call is
> successful.
>
> This patch makes sure that pager_process is properly initialized on
> setup_pager(). Drop CHILD_PROCESS_INIT from its declaration since it's
> no longer really necessary.
>
> Add a test to catch possible regressions.
>
> Reproducer:
> $ git config pager.show INVALID_PAGER
> $ git show $VALID_COMMIT
> error: cannot run INVALID_PAGER: No such file or directory
> [1]    3619 segmentation fault (core dumped)  git show $VALID_COMMIT
>
> Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
> ---
> Changes to v3:
>  - change test description, as per Eric's suggestion
>  - drop CHILD_PROCESS_INIT, as per Jeff's suggestion
Thanks.  Everything looks good.  Will queue.
Previous: Enzo Matsumiya
Message 2 of 2 in “pager: fix crash when pager program doesn't exist”
  1. pager: fix crash when pager program doesn't existEnzo Matsumiya, Nov 25, 2021
  2. Junio C HamanoNov 26, 2021

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.