From: Ronny Chevalier Date: Sun, 14 May 2017 11:19:11 +0000 (+0200) Subject: conf-parser: fix wrong argument given to log_syntax_invalid_utf8 X-Git-Tag: chiark/234.4-1+devuan1.1+iwj1~134 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=07c1259e9a7bbbee52cbb820a1559d92b7fe473d;p=elogind.git conf-parser: fix wrong argument given to log_syntax_invalid_utf8 The condition is on "word", hence we give word instead of rvalue. An assert would be triggered if !utf8_is_valid(word) is true and rvalue == NULL, since log_syntax_invalid_utf8 calls utf8_escape_invalid which calls assert(str). A test case has been added to test with valid and invalid utf8. --- diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 06c05a0ce..291c4188c 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -802,7 +802,7 @@ int config_parse_strv(const char *unit, } if (!utf8_is_valid(word)) { - log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue); + log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, word); free(word); continue; } diff --git a/src/test/test-conf-parser.c b/src/test/test-conf-parser.c index 1d74e1b01..8e951d7cf 100644 --- a/src/test/test-conf-parser.c +++ b/src/test/test-conf-parser.c @@ -190,6 +190,8 @@ static void test_config_parse_strv(void) { test_config_parse_strv_one("foo", STRV_MAKE("foo")); test_config_parse_strv_one("foo bar foo", STRV_MAKE("foo", "bar", "foo")); test_config_parse_strv_one("\"foo bar\" foo", STRV_MAKE("foo bar", "foo")); + test_config_parse_strv_one("\xc3\x80", STRV_MAKE("\xc3\x80")); + test_config_parse_strv_one("\xc3\x7f", STRV_MAKE_EMPTY); } static void test_config_parse_mode(void) {