Skip to content

Commit 65807ee

Browse files
jherlandgitster
authored andcommitted
builtin-config: Fix crash when using "-f <relative path>" from non-root dir
When your current directory is not at the root of the working tree, and you use the "-f" option with a relative path, the current code tries to read from a wrong file, since argv[2] is now beyond the end of the rearranged argument list. This patch replaces the incorrect argv[2] with the variable holding the given config file name. The bug was introduced by d64ec16 (git config: reorganize to use parseopt). [jc: added test] Signed-off-by: Johan Herland <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e276f01 commit 65807ee

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

builtin-config.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
339339
if (!is_absolute_path(given_config_file) && prefix)
340340
config_exclusive_filename = prefix_filename(prefix,
341341
strlen(prefix),
342-
argv[2]);
342+
given_config_file);
343343
else
344344
config_exclusive_filename = given_config_file;
345345
}

t/t1300-repo-config.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect'
398398
test_expect_success 'alternative GIT_CONFIG (--file)' \
399399
'git config --file other-config -l > output && cmp output expect'
400400

401+
test_expect_success 'refer config from subdirectory' '
402+
mkdir x &&
403+
(
404+
cd x &&
405+
echo strasse >expect
406+
git config --get --file ../other-config ein.bahn >actual &&
407+
test_cmp expect actual
408+
)
409+
410+
'
411+
401412
GIT_CONFIG=other-config git config anwohner.park ausweis
402413

403414
cat > expect << EOF

0 commit comments

Comments
 (0)