Skip to contentSkip to conversation

var: avoid a segmentation fault when `HOME` is unset

PATCH In review Johannes Schindelin via GitGitGadget 3 participants 3 messages Sep 4, 2023 – Sep 5, 2023

lore
Share & tools
lore
#0 lore raw

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
index 74161bdf1c6..8cf7dd9e2e5 100644
@@ -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
index 8cb597f99c4..ff4fd9348cc 100755
@@ -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
#1 lore raw
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 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.

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
#2 lore raw

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 use xstrdup() for pointers known never to be NULL, and xstrdup_or_null() otherwise.

Quoted 7 lines
Quoted 5 lines

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.

Looks good to me.

Thank you for the review.

Ciao,
Johannes