|
Zbigniew Jędrzejewski-Szmek |
96237b |
From 799f37dd06946958dfed2aec54788c5e81bf340a Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
Date: Tue, 4 Mar 2014 09:50:26 -0500
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
Subject: [PATCH] Do not print invalid UTF-8 in error messages
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
Inexplicably, 550a40ec ('core: do not print invalid utf-8 in error
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
messages') only fixed two paths. Convert all of them now.
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
(cherry picked from commit b5d742138f71e87312541a89aac5657015f50f48)
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/core/load-fragment.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/shared/conf-parser.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
---
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/core/load-fragment.c | 11 +++--------
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/shared/conf-parser.c | 6 ++----
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/shared/conf-parser.h | 6 ++++++
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
src/shared/fileio.c | 9 ++++++---
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
4 files changed, 17 insertions(+), 15 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
index 82aed1e..027ec5f 100644
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
--- a/src/core/load-fragment.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+++ b/src/core/load-fragment.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -535,9 +535,7 @@ int config_parse_exec(const char *unit,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(path)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- "Path is not UTF-8 clean, ignoring assignment: %s",
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
r = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
goto fail;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -552,9 +550,7 @@ int config_parse_exec(const char *unit,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(c)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- "Path is not UTF-8 clean, ignoring assignment: %s",
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
r = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
goto fail;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -1959,8 +1955,7 @@ int config_parse_unit_requires_mounts_for(
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
return log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(n)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- "Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
index cfa669b..b6aa856 100644
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
--- a/src/shared/conf-parser.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+++ b/src/shared/conf-parser.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -656,8 +656,7 @@ int config_parse_path(const char *unit,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
assert(data);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(rvalue)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- "Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -725,8 +724,7 @@ int config_parse_strv(const char *unit,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
return log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(n)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- log_syntax(unit, LOG_ERR, filename, line, EINVAL,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- "String is not UTF-8 clean, ignoring: %s", rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
index 4ccdadd..7e1c493 100644
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
--- a/src/shared/conf-parser.h
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+++ b/src/shared/conf-parser.h
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -124,6 +124,12 @@ int log_syntax_internal(const char *unit, int level,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
config_file, config_line, \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
error, __VA_ARGS__)
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ _cleanup_free_ char *__p = utf8_escape_invalid(rvalue); \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ log_syntax(unit, level, config_file, config_line, error, \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ "String is not UTF-8 clean, ignoring assignment: %s", __p); \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
#define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg) \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
int function(const char *unit, \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
const char *filename, \
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
diff --git a/src/shared/fileio.c b/src/shared/fileio.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
index 0d3f2e9..fcd1b8a 100644
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
--- a/src/shared/fileio.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+++ b/src/shared/fileio.c
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
@@ -598,15 +598,18 @@ static int load_env_file_push(const char *filename, unsigned line,
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
int r;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (!utf8_is_valid(key)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ _cleanup_free_ char *t = utf8_escape_invalid(key);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.",
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- filename, line, key);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ filename, line, t);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
return -EINVAL;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
if (value && !utf8_is_valid(value)) {
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- /* FIXME: filter UTF-8 */
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ _cleanup_free_ char *t = utf8_escape_invalid(value);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.",
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
- filename, line, key, value);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
+ filename, line, key, t);
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
return -EINVAL;
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
96237b |
|