Skip to content

Commit

Permalink
builtin-config: Fix crash when using "-f <relative path>" from non-ro…
Browse files Browse the repository at this point in the history
…ot 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 <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johan Herland authored and Junio C Hamano committed Jan 26, 2010
1 parent e276f01 commit 65807ee
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
2 changes: 1 addition & 1 deletion builtin-config.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
if (!is_absolute_path(given_config_file) && prefix)
config_exclusive_filename = prefix_filename(prefix,
strlen(prefix),
argv[2]);
given_config_file);
else
config_exclusive_filename = given_config_file;
}
Expand Down
11 changes: 11 additions & 0 deletions t/t1300-repo-config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 65807ee

Please sign in to comment.