udev: allow substitutions for SECLABEL key (#4505)

This commit is contained in:
Michal Sekletar
2016-10-28 12:09:14 +02:00
committed by Martin Pitt
parent e100155dcc
commit 4f985bd802
2 changed files with 9 additions and 3 deletions
+2 -2
View File
@@ -577,8 +577,8 @@
<para>The <varname>NAME</varname>, <varname>SYMLINK</varname>,
<varname>PROGRAM</varname>, <varname>OWNER</varname>,
<varname>GROUP</varname>, <varname>MODE</varname>, and
<varname>RUN</varname> fields support simple string substitutions.
<varname>GROUP</varname>, <varname>MODE</varname>, <varname>SECLABEL</varname>,
and <varname>RUN</varname> fields support simple string substitutions.
The <varname>RUN</varname> substitutions are performed after all rules
have been processed, right before the program is executed, allowing for
the use of device properties set by earlier matching rules. For all other
+7 -1
View File
@@ -2218,10 +2218,16 @@ void udev_rules_apply_to_event(struct udev_rules *rules,
rule->rule.filename_line);
break;
case TK_A_SECLABEL: {
char label_str[UTIL_LINE_SIZE] = {};
const char *name, *label;
name = rules_str(rules, cur->key.attr_off);
label = rules_str(rules, cur->key.value_off);
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), label_str, sizeof(label_str));
if (label_str[0] != '\0')
label = label_str;
else
label = rules_str(rules, cur->key.value_off);
if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL)
udev_list_cleanup(&event->seclabel_list);
udev_list_entry_add(&event->seclabel_list, name, label);