From b5d742138f71e87312541a89aac5657015f50f48 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 4 Mar 2014 09:50:26 -0500 Subject: [PATCH] Do not print invalid UTF-8 in error messages Inexplicably, 550a40ec ('core: do not print invalid utf-8 in error messages') only fixed two paths. Convert all of them now. --- src/core/load-fragment.c | 13 ++++--------- src/shared/conf-parser.c | 7 +++---- src/shared/conf-parser.h | 6 ++++++ src/shared/fileio.c | 9 ++++++--- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index d77bf5cf9..5628d8c91 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -536,9 +536,7 @@ int config_parse_exec(const char *unit, } if (!utf8_is_valid(path)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Path is not UTF-8 clean, ignoring assignment: %s", - rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); r = 0; goto fail; } @@ -553,9 +551,7 @@ int config_parse_exec(const char *unit, } if (!utf8_is_valid(c)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Path is not UTF-8 clean, ignoring assignment: %s", - rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); r = 0; goto fail; } @@ -1960,8 +1956,7 @@ int config_parse_unit_requires_mounts_for( return log_oom(); if (!utf8_is_valid(n)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); continue; } @@ -2885,7 +2880,7 @@ int config_parse_namespace_path_strv( return log_oom(); if (!utf8_is_valid(n)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); continue; } diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 0a87a7151..d27b1b7ee 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -585,7 +585,7 @@ int config_parse_string( assert(data); if (!utf8_is_valid(rvalue)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, "String is not UTF-8 clean, ignoring assignment: %s", rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); return 0; } @@ -623,7 +623,7 @@ int config_parse_path( assert(data); if (!utf8_is_valid(rvalue)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); return 0; } @@ -688,8 +688,7 @@ int config_parse_strv(const char *unit, return log_oom(); if (!utf8_is_valid(n)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "String is not UTF-8 clean, ignoring: %s", rvalue); + log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue); continue; } diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index e1c7ab44c..ba0e58db2 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -121,6 +121,12 @@ int log_syntax_internal(const char *unit, int level, config_file, config_line, \ error, __VA_ARGS__) +#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \ + _cleanup_free_ char *__p = utf8_escape_invalid(rvalue); \ + log_syntax(unit, level, config_file, config_line, error, \ + "String is not UTF-8 clean, ignoring assignment: %s", __p); \ + } + #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \ int function(const char *unit, \ const char *filename, \ diff --git a/src/shared/fileio.c b/src/shared/fileio.c index d5915673d..f10126954 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -598,15 +598,18 @@ static int load_env_file_push(const char *filename, unsigned line, int r; if (!utf8_is_valid(key)) { + _cleanup_free_ char *t = utf8_escape_invalid(key); + log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.", - filename, line, key); + filename, line, t); return -EINVAL; } if (value && !utf8_is_valid(value)) { - /* FIXME: filter UTF-8 */ + _cleanup_free_ char *t = utf8_escape_invalid(value); + log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.", - filename, line, key, value); + filename, line, key, t); return -EINVAL; } -- 2.30.2