From 2169ddc056b56deba701cbbba28cdaf2e9821224 Mon Sep 17 00:00:00 2001 From: Libor Pechacek Date: Tue, 1 Feb 2011 08:13:47 +0100 Subject: [PATCH] Disallow empty section and variable names It is possible to break your repository config by creating an invalid key. The config parser in turn chokes on it: $ git init Initialized empty Git repository in /tmp/gittest/.git/ $ git config .foo false $ git config core.bare fatal: bad config file line 6 in .git/config This patch makes git-config reject keys which start or end with a dot and adds tests for these cases. Signed-off-by: Libor Pechacek Signed-off-by: Junio C Hamano --- config.c | 7 ++++++- t/t1300-repo-config.sh | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/config.c b/config.c index f758734d4..d5bb8629a 100644 --- a/config.c +++ b/config.c @@ -1120,11 +1120,16 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_) * key name separated by a dot, we have to know where the dot is. */ - if (last_dot == NULL) { + if (last_dot == NULL || last_dot == key) { error("key does not contain a section: %s", key); return -2; } + if (!last_dot[1]) { + error("key does not contain variable name: %s", key); + return -2; + } + baselen = last_dot - key; if (baselen_) *baselen_ = baselen; diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index c3d91d10a..53fb8228c 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -889,6 +889,10 @@ test_expect_success 'key sanity-checking' ' test_must_fail git config foo.1bar && test_must_fail git config foo."ba z".bar && + test_must_fail git config . false && + test_must_fail git config .foo false && + test_must_fail git config foo. false && + test_must_fail git config .foo. false && git config foo.bar true && git config foo."ba =z".bar false ' -- 2.30.2