From dc6d7befaa0de08814d4aaf85838faaf3fec8671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Wed, 22 Sep 2021 19:49:33 +0300 Subject: Fix parcini treating one key characters as errors --- src/parcini.c | 6 +++--- src/tests/parcini.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/parcini.c b/src/parcini.c index 7fa8247..8434685 100644 --- a/src/parcini.c +++ b/src/parcini.c @@ -144,6 +144,9 @@ parcini_parse_next_line(parcini_t *parser, struct parcini_line *parsed) parsed->section = parser->last_section; char *delim = strchr(start, '='); + if (start == delim) { + return PARCINI_KEY_PARSE_ERROR; + } if (delim) { char *cmnt = strchr(start, PARCINI_COMMENT_CHAR); if (cmnt && cmnt < delim) { @@ -153,9 +156,6 @@ parcini_parse_next_line(parcini_t *parser, struct parcini_line *parsed) *end = '\0'; end -= 1; rstrip(start, &end); - if (start == end) { - return PARCINI_KEY_PARSE_ERROR; - } parsed->key = start; start = delim + 1; diff --git a/src/tests/parcini.c b/src/tests/parcini.c index f53ab09..90d5997 100644 --- a/src/tests/parcini.c +++ b/src/tests/parcini.c @@ -35,7 +35,7 @@ test_parcini_parse_file(void) asserteq(res, PARCINI_KEYVALUE); asserteq(line.lineno, 3); asserteq(strcmp(line.section, ""), 0); - asserteq(strcmp(line.key, "key3"), 0); + asserteq(strcmp(line.key, "3"), 0); asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); asserteq(line.value.value.boolean, false); @@ -115,14 +115,19 @@ test_parcini_parse_file(void) /* line 15 */ res = parcini_parse_next_line(parser, &line); - asserteq(res, PARCINI_EMPTY_LINE); + asserteq(res, PARCINI_KEY_PARSE_ERROR); asserteq(line.lineno, 15); /* line 16 */ res = parcini_parse_next_line(parser, &line); - asserteq(res, PARCINI_SECTION_PARSE_ERROR); + asserteq(res, PARCINI_EMPTY_LINE); asserteq(line.lineno, 16); + /* line 17 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_SECTION_PARSE_ERROR); + asserteq(line.lineno, 17); + /* EOF */ res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_EOF); -- cgit v1.2.3