From: Yu Watanabe Date: Wed, 14 Apr 2021 06:13:54 +0000 (+0900) Subject: udev: replace unsafe characters on assigning ENV{key}="val" when OPTIONS="string_esca... X-Git-Tag: v249-rc2~11^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ea0f4578a7e90f5227817058bfb11bb91dbb1431;p=thirdparty%2Fsystemd.git udev: replace unsafe characters on assigning ENV{key}="val" when OPTIONS="string_escape=replace" is set Strictly speaking, this breaks backward compatibility, as previously `ENV{key}="val"` ignored `string_escape=` option. But, introducing a new option such as `string_escape=hoge` sounds overkill for me. The default escape mode is `ESCAPE_UNSET`, so I hope this merely break existing rules. --- diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index d34f9be39ef..8713186226b 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -2024,6 +2024,12 @@ static int udev_rule_apply_token_to_event( l = strpcpyl(&p, l, val, " ", NULL); (void) udev_event_apply_format(event, token->value, p, l, false); + if (event->esc == ESCAPE_REPLACE) { + count = udev_replace_chars(buf, NULL); + if (count > 0) + log_rule_debug(dev, rules, "Replaced %zu slash(es) from result of ENV{%s}%s=\"%s\"", + count, name, token->op == OP_ADD ? "+" : "", token->value); + } r = device_add_property(dev, name, value_new); if (r < 0)