Config parse header ext: don't allow text after closing quote Nothing is allowed betwen the closing quotation mark and the ] so return an error if there is. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
diff --git a/src/config_file.c b/src/config_file.c
index 4b7ce06..57611a7 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -595,12 +595,15 @@ static int parse_section_header_ext(const char *line, const char *base_name, cha
* added to the string. In case of error, jump to out
*/
do {
+ if (quote_marks == 2) {
+ error = git__throw(GIT_EOBJCORRUPTED, "Falied to parse ext header. Text after closing quote");
+ goto out;
+
+ }
+
switch (c) {
case '"':
- if (quote_marks++ >= 2) {
- error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse ext header. Too many quotes");
- goto out;
- }
+ ++quote_marks;
break;
case '\\':
c = line[rpos++];
@@ -612,6 +615,7 @@ static int parse_section_header_ext(const char *line, const char *base_name, cha
error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse ext header. Unsupported escape char \\%c", c);
goto out;
}
+ break;
default:
break;
}