From 6b35ae81a38573dcc42a944ebd8c2e6317cf5ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Mon, 8 Nov 2021 17:44:18 +0300 Subject: slicecpy: fix buffer overflow on sections shorter than 3 chars. --- src/tests/parcini.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'src/tests') diff --git a/src/tests/parcini.c b/src/tests/parcini.c index 90d5997..7511115 100644 --- a/src/tests/parcini.c +++ b/src/tests/parcini.c @@ -53,7 +53,7 @@ test_parcini_parse_file(void) res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_SECTION); asserteq(line.lineno, 6); - asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.section, "s"), 0); asserteq(line.key, NULL); asserteq(line.value.type, PARCINI_VALUE_NONE); @@ -61,7 +61,7 @@ test_parcini_parse_file(void) res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_KEYVALUE); asserteq(line.lineno, 7); - asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.section, "s"), 0); asserteq(strcmp(line.key, "skey"), 0); asserteq(line.value.type, PARCINI_VALUE_STRING); asserteq(strcmp(line.value.value.string, "ur 2 slow"), 0); @@ -90,7 +90,7 @@ test_parcini_parse_file(void) res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_KEYVALUE); asserteq(line.lineno, 12); - asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.section, "s"), 0); asserteq(strcmp(line.key, "bool2"), 0); asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); asserteq(line.value.value.boolean, true); @@ -99,7 +99,7 @@ test_parcini_parse_file(void) res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_KEYVALUE); asserteq(line.lineno, 13); - asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.section, "s"), 0); asserteq(strcmp(line.key, "bool3"), 0); asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); asserteq(line.value.value.boolean, false); @@ -108,7 +108,7 @@ test_parcini_parse_file(void) res = parcini_parse_next_line(parser, &line); asserteq(res, PARCINI_KEYVALUE); asserteq(line.lineno, 14); - asserteq(strcmp(line.section, "asection"), 0); + asserteq(strcmp(line.section, "s"), 0); asserteq(strcmp(line.key, "bool3"), 0); asserteq(line.value.type, PARCINI_VALUE_BOOLEAN); asserteq(line.value.value.boolean, true); @@ -125,8 +125,34 @@ test_parcini_parse_file(void) /* line 17 */ res = parcini_parse_next_line(parser, &line); - asserteq(res, PARCINI_SECTION_PARSE_ERROR); + asserteq(res, PARCINI_SECTION); asserteq(line.lineno, 17); + asserteq(strcmp(line.section, "se"), 0); + asserteq(line.key, NULL); + asserteq(line.value.type, PARCINI_VALUE_NONE); + + /* line 18 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EMPTY_LINE); + asserteq(line.lineno, 18); + + /* line 19 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_SECTION_PARSE_ERROR); + asserteq(line.lineno, 19); + + /* line 20 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_EMPTY_LINE); + asserteq(line.lineno, 20); + + /* line 21 */ + res = parcini_parse_next_line(parser, &line); + asserteq(res, PARCINI_SECTION); + asserteq(line.lineno, 21); + asserteq(strcmp(line.section, "section"), 0); + asserteq(line.key, NULL); + asserteq(line.value.type, PARCINI_VALUE_NONE); /* EOF */ res = parcini_parse_next_line(parser, &line); -- cgit v1.2.3