From: Yu Watanabe Date: Mon, 7 Mar 2022 07:09:23 +0000 (+0900) Subject: conf-parser: introduce CONFIG_PARSE_STRING_ASCII flag X-Git-Tag: v251-rc1~165^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e289ce7f67bb5a560bf9dcdc9017c0e1a135fec0;p=thirdparty%2Fsystemd.git conf-parser: introduce CONFIG_PARSE_STRING_ASCII flag When the flag is set, the string which contains non-ascii characters will be refused. --- diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 1640500d57c..ceadfdb7233 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -894,6 +894,15 @@ int config_parse_string( return 0; } + if (FLAGS_SET(ltype, CONFIG_PARSE_STRING_ASCII) && !ascii_is_valid(rvalue)) { + _cleanup_free_ char *escaped = NULL; + + escaped = cescape(rvalue); + log_syntax(unit, LOG_WARNING, filename, line, 0, + "Specified string contains invalid ASCII characters, ignoring: %s", strna(escaped)); + return 0; + } + return free_and_strdup_warn(s, empty_to_null(rvalue)); } diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index b0d6cebc972..f3044b0ca6c 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -204,6 +204,9 @@ typedef enum Disabled { typedef enum ConfigParseStringFlags { CONFIG_PARSE_STRING_SAFE = 1 << 0, + CONFIG_PARSE_STRING_ASCII = 1 << 1, + + CONFIG_PARSE_STRING_SAFE_AND_ASCII = CONFIG_PARSE_STRING_SAFE | CONFIG_PARSE_STRING_ASCII, } ConfigParseStringFlags; #define DEFINE_CONFIG_PARSE(function, parser, msg) \