summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2016-03-01 14:40:17 +0100
committerPatrick Steinhardt <ps@pks.im>2016-03-10 10:28:33 +0100
commite126bc95cd296767ae6c372abb3d4c87ca359a57 (patch)
treeff59a88204a92d415911be652d65903b0a31aef8
parent345758ad45ffddb5d69ca2e97324127a20ab6827 (diff)
downloadlibgit2-e126bc95cd296767ae6c372abb3d4c87ca359a57.tar.gz
config_file: handle missing quotation marks in section header
When parsing a section header we expect something along the format of '[section "subsection"]'. When a section is mal-formated and is entirely missing its quotation marks we catch this case by observing that `strchr(line, '"') - strrchr(line, '"') = NULL - NULL = 0` and error out. Unfortunately, the error message is misleading though, as we state that we are missing the closing quotation mark while we in fact miss both quotation marks. Improve the error message by explicitly checking if the first quotation mark could be found and, if not, stating that quotation marks are completely missing.
-rw-r--r--src/config_file.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 5f5e309e0..65971b930 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -1032,6 +1032,11 @@ static int parse_section_header_ext(struct reader *reader, const char *line, con
*/
first_quote = strchr(line, '"');
+ if (first_quote == NULL) {
+ set_parse_error(reader, 0, "Missing quotation marks in section header");
+ return -1;
+ }
+
last_quote = strrchr(line, '"');
quoted_len = last_quote - first_quote;