diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 581bbaf345..366f7ba92c 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1771,27 +1771,28 @@ static bool token_match_attr(UdevRuleToken *token, sd_device *dev, UdevEvent *ev case SUBST_TYPE_PLAIN: if (sd_device_get_sysattr_value(dev, name, &value) < 0) return false; - break; + + /* remove trailing whitespace, if not asked to match for it */ + if (token->attr_match_remove_trailing_whitespace) { + strscpy(vbuf, sizeof(vbuf), value); + value = delete_trailing_chars(vbuf, NULL); + } + + return token_match_string(token, value); + case SUBST_TYPE_SUBSYS: if (udev_resolve_subsys_kernel(name, vbuf, sizeof(vbuf), true) < 0) return false; - value = vbuf; - break; + + /* remove trailing whitespace, if not asked to match for it */ + if (token->attr_match_remove_trailing_whitespace) + delete_trailing_chars(vbuf, NULL); + + return token_match_string(token, vbuf); + default: assert_not_reached(); } - - /* remove trailing whitespace, if not asked to match for it */ - if (token->attr_match_remove_trailing_whitespace) { - if (value != vbuf) { - strscpy(vbuf, sizeof(vbuf), value); - value = vbuf; - } - - delete_trailing_chars(vbuf, NULL); - } - - return token_match_string(token, value); } static int get_property_from_string(char *line, char **ret_key, char **ret_value) {