config_set_multivar(): disallow newlines in keys
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Sat, 20 Jan 2007 01:25:37 +0000 (02:25 +0100)
committerJunio C Hamano <junkio@cox.net>
Sat, 20 Jan 2007 01:55:14 +0000 (17:55 -0800)
This will no longer work:

$ git repo-config 'key.with
newline' some-value

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
config.c
t/t1300-repo-config.sh

index b6082f597c118d75a9342d1e0bf5788c7a8257ee..c08c66890f0162fe69452927c48d6835178ed12d 100644 (file)
--- a/config.c
+++ b/config.c
@@ -661,6 +661,11 @@ int git_config_set_multivar(const char* key, const char* value,
                                goto out_free;
                        }
                        c = tolower(c);
+               } else if (c == '\n') {
+                       fprintf(stderr, "invalid key (newline): %s\n", key);
+                       free(store.key);
+                       ret = 1;
+                       goto out_free;
                }
                store.key[i] = c;
        }
index 60acdd368bfcb6ccb4698f6fd7533dd25befd9b0..eb7455ba21030252d5e988e2d184d16d63a7ea67 100755 (executable)
@@ -418,5 +418,11 @@ EOF
 
 test_expect_success 'quoting' 'cmp .git/config expect'
 
+test_expect_failure 'key with newline' 'git repo-config key.with\\\
+newline 123'
+
+test_expect_success 'value with newline' 'git repo-config key.sub value.with\\\
+newline'
+
 test_done