diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2023-09-04 09:21:26 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-09-06 01:28:26 +0300 |
commit | 256a94ef6c8c0c94f9629a1ffe893577ccef8efd (patch) | |
tree | 43cf7cad9d7d2c1d27f725eb11b4b819f5a569e7 /builtin/var.c | |
parent | ed773a18c6e92ae4f4e016f4529d6bdfbbbd56d8 (diff) |
var: avoid a segmentation fault when `HOME` is unset
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.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/var.c')
-rw-r--r-- | builtin/var.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/var.c b/builtin/var.c index ef45710a20..05ba69e47b 100644 --- a/builtin/var.c +++ b/builtin/var.c @@ -64,7 +64,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; |