summaryrefslogtreecommitdiff
path: root/versioncmp.c
diff options
context:
space:
mode:
authorLibravatar Enzo Matsumiya <ematsumiya@suse.de>2021-11-24 21:02:39 -0300
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-11-24 16:14:10 -0800
commitf917f57f40a22b64ab5354e99dbf32bb48d9fc0a (patch)
treea07ad0bc547c38dde56e6a32118db6696cd680bd /versioncmp.c
parentGit 2.34.1 (diff)
downloadtgif-f917f57f40a22b64ab5354e99dbf32bb48d9fc0a.tar.xz
pager: fix crash when pager program doesn't exist
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'versioncmp.c')
0 files changed, 0 insertions, 0 deletions