mirror of
https://github.com/systemd/systemd.git
synced 2025-01-27 18:04:05 +03:00
conf-parse: add generic config_parse_safe_string() helper
This helper is just like config_parse_string() but does some superficial checks for control characters and quotes. In most cases we currently use config_parse_string() we probably want to use config_parse_safe_string() for safety reasons.
This commit is contained in:
parent
97f27f8a16
commit
2d17d699bb
@ -873,6 +873,33 @@ int config_parse_string(
|
|||||||
return free_and_strdup_warn(s, empty_to_null(rvalue));
|
return free_and_strdup_warn(s, empty_to_null(rvalue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int config_parse_safe_string(
|
||||||
|
const char *unit,
|
||||||
|
const char *filename,
|
||||||
|
unsigned line,
|
||||||
|
const char *section,
|
||||||
|
unsigned section_line,
|
||||||
|
const char *lvalue,
|
||||||
|
int ltype,
|
||||||
|
const char *rvalue,
|
||||||
|
void *data,
|
||||||
|
void *userdata) {
|
||||||
|
|
||||||
|
char **s = data;
|
||||||
|
|
||||||
|
assert(filename);
|
||||||
|
assert(lvalue);
|
||||||
|
assert(rvalue);
|
||||||
|
assert(data);
|
||||||
|
|
||||||
|
if (!string_is_safe(rvalue)) {
|
||||||
|
log_syntax(unit, LOG_WARNING, filename, line, 0, "Specified string contains unsafe characters, ignoring: %s", rvalue);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return free_and_strdup_warn(s, empty_to_null(rvalue));
|
||||||
|
}
|
||||||
|
|
||||||
int config_parse_path(
|
int config_parse_path(
|
||||||
const char *unit,
|
const char *unit,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
|
@ -168,6 +168,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_bool);
|
|||||||
CONFIG_PARSER_PROTOTYPE(config_parse_id128);
|
CONFIG_PARSER_PROTOTYPE(config_parse_id128);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_tristate);
|
CONFIG_PARSER_PROTOTYPE(config_parse_tristate);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_string);
|
CONFIG_PARSER_PROTOTYPE(config_parse_string);
|
||||||
|
CONFIG_PARSER_PROTOTYPE(config_parse_safe_string);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_path);
|
CONFIG_PARSER_PROTOTYPE(config_parse_path);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_strv);
|
CONFIG_PARSER_PROTOTYPE(config_parse_strv);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_sec);
|
CONFIG_PARSER_PROTOTYPE(config_parse_sec);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user