Commit 5892277c by Carlos Martín Nieto

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>
parent 7288d8b6
...@@ -595,12 +595,15 @@ static int parse_section_header_ext(const char *line, const char *base_name, cha ...@@ -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 * added to the string. In case of error, jump to out
*/ */
do { do {
if (quote_marks == 2) {
error = git__throw(GIT_EOBJCORRUPTED, "Falied to parse ext header. Text after closing quote");
goto out;
}
switch (c) { switch (c) {
case '"': case '"':
if (quote_marks++ >= 2) { ++quote_marks;
error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse ext header. Too many quotes");
goto out;
}
break; break;
case '\\': case '\\':
c = line[rpos++]; c = line[rpos++];
...@@ -612,6 +615,7 @@ static int parse_section_header_ext(const char *line, const char *base_name, cha ...@@ -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); error = git__throw(GIT_EOBJCORRUPTED, "Failed to parse ext header. Unsupported escape char \\%c", c);
goto out; goto out;
} }
break;
default: default:
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment