diff options
author | Libor Pechacek <lpechacek@suse.cz> | 2011-02-01 08:13:47 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-02-22 15:19:46 -0800 |
commit | 2169ddc056b56deba701cbbba28cdaf2e9821224 (patch) | |
tree | 63efb8d26f51e9c09752151e398dfb122eeb2053 /config.c | |
parent | b09c53a3e331211fc0154de8ebb271e48f8c7ee5 (diff) | |
download | git-2169ddc056b56deba701cbbba28cdaf2e9821224.tar.gz git-2169ddc056b56deba701cbbba28cdaf2e9821224.tar.xz |
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 <lpechacek@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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; |