var: avoid a segmentation fault when `HOME` is unset
PATCH 1/1 var: avoid a segmentation fault when `HOME` is unset
From: Johannes Schindelin <[email protected]>
The code introduced in 576a37fccbf (var: add attributes files locations, 2023-06-27) paid careful attention to use xstrdup() for pointers known never to be NULL, and xstrdup_or_null() otherwise.
One spot was missed, though: git_attr_global_file() can return NULL, when the HOME variable is not set (and neither XDG_CONFIG_HOME), a scenario not too uncommon in certain server scenarios.
Fix this, and add a test case to avoid future regressions.
---
var: avoid a segmentation fault when HOME is unset
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1580%2Fdscho%2Favoid-segfault-in-git-var-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1580/dscho/avoid-segfault-in-git-var-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1580
builtin/var.c | 2 +- t/t0007-git-var.sh | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-)
builtin/var.c +1 -1
@@ -66,7 +66,7 @@ static char *git_attr_val_system(int ident_flag UNUSED) static char *git_attr_val_global(int ident_flag UNUSED) { -char *file =xstrdup (git_attr_global_file ()); +char *file =xstrdup_or_null (git_attr_global_file ());if (file) {normalize_path_copy (file, file);return file;
t/t0007-git-var.sh +9 -0
@@ -268,4 +268,13 @@ test_expect_success 'listing and asking for variables are exclusive' ' test_must_fail git var -l GIT_COMMITTER_IDENT ' +test_expect_success '`git var -l` works even without HOME' ' + ( + XDG_CONFIG_HOME= && + export XDG_CONFIG_HOME && + unset HOME && + git var -l + ) +' + test_done
base-commit: 43c8a30d150ecede9709c1f2527c8fba92c65f40
Signature · 1 line
gitgitgadget
Quoted 11 lines · Johannes Schindelin via GitGitGadget
From: Johannes Schindelin <[email protected]>
The code introduced in
576a37fccbf(var: add attributes files locations, 2023-06-27) paid careful attention to usexstrdup()for pointers known never to beNULL, andxstrdup_or_null()otherwise.One spot was missed, though:
git_attr_global_file()can returnNULL, when theHOMEvariable is not set (and neitherXDG_CONFIG_HOME), a scenario not too uncommon in certain server scenarios.Fix this, and add a test case to avoid future regressions.
Looks good to me. Thanks for the patch, and my apologies for the oversight.
Signature · 2 lines
brian m. carlson (he/him or they/them) Toronto, Ontario, CA
Hi brian,
Quoted 7 lines · brian m. carlson
Quoted 6 lines · Johannes Schindelin via GitGitGadget
From: Johannes Schindelin <[email protected]>
The code introduced in
576a37fccbf(var: add attributes files locations, 2023-06-27) paid careful attention to usexstrdup()for pointers known never to beNULL, andxstrdup_or_null()otherwise.
Quoted 7 lines
Quoted 5 lines
One spot was missed, though:
git_attr_global_file()can returnNULL, when theHOMEvariable is not set (and neitherXDG_CONFIG_HOME), a scenario not too uncommon in certain server scenarios.Fix this, and add a test case to avoid future regressions.
Looks good to me.
Thank you for the review.
Ciao,
Johannes