Johan Herland <johan@xxxxxxxxxxx> writes: > 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 segfaults since > argv has already been parsed, and argv[2] is now is a NULL pointer. Strictly speaking, the last sentence is not necessarily true. argv[2] is typically beyond the NULL pointer parseopt added to terminate the resulting list. E.g. with the attached patch to t1300 (which I will squash in), argv[0] is ein.bahn, argv[1] is NULL (end of argument list after parseopt stripped the options from it), and argv[2] is --file. > 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). > > Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> > --- > > This is probably v1.7.0 material, and maybe even suitable for 'maint'. > AFAICS, d64ec16... has been with us since before v1.6.3-rc0. Yup, this is maint worthy. Even if argv[2] happens to be non-NULL, it certainly is not given_config_file at all. Thanks. t/t1300-repo-config.sh | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 43ea283..c81ccf2 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect' test_expect_success 'alternative GIT_CONFIG (--file)' \ 'git config --file other-config -l > output && cmp output expect' +test_expect_success 'refer config from subdirectory' ' + mkdir x && + ( + cd x && + echo strasse >expect + git config --get --file ../other-config ein.bahn >actual && + test_cmp expect actual + ) + +' + GIT_CONFIG=other-config git config anwohner.park ausweis cat > expect << EOF -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html