X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fconf-parser.c;h=ee6de653e13286220202f067485e2e70cdbeea1c;hb=c73d180dc4bbd87c945a524b42b672af2ffe2609;hp=0be7226871218e0a38f687ad59d6a55ca6fc9dc2;hpb=36f822c4bd077f9121757e24b6516e5c7ada63b5;p=elogind.git diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 0be722687..ee6de653e 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -675,7 +675,8 @@ int config_parse_strv(const char *unit, void *data, void *userdata) { - char *** sv = data, *w, *state; + char ***sv = data; + const char *word, *state; size_t l; int r; @@ -700,15 +701,16 @@ int config_parse_strv(const char *unit, return 0; } - FOREACH_WORD_QUOTED(w, l, rvalue, state) { + FOREACH_WORD_QUOTED(word, l, rvalue, state) { char *n; - n = strndup(w, l); + n = strndup(word, l); if (!n) return log_oom(); if (!utf8_is_valid(n)) { log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); + free(n); continue; } @@ -716,6 +718,9 @@ int config_parse_strv(const char *unit, if (r < 0) return log_oom(); } + if (!isempty(state)) + log_syntax(unit, LOG_ERR, filename, line, EINVAL, + "Trailing garbage, ignoring."); return 0; }