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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2014-03-04 09:50:26 -05:00
parent 6e18964d3a
commit b5d742138f
4 changed files with 19 additions and 16 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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, \

View File

@ -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;
}