fix $attr{[<subsystem>/<sysname>]<attribute>} substitution
This commit is contained in:
@@ -1654,6 +1654,16 @@ EOF
|
||||
rules => <<EOF
|
||||
KERNEL=="sda", MODE="440"
|
||||
KERNEL=="sda", PROGRAM=="/bin/echo 0 0 0400letsdoabuffferoverflow0123456789012345789012345678901234567890", OWNER="%c{1}", GROUP="%c{2}", MODE="%c{3}"
|
||||
EOF
|
||||
},
|
||||
{
|
||||
desc => "magic [subsys/sysname] attribute substitution",
|
||||
subsys => "block",
|
||||
devpath => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
|
||||
exp_name => "sda-8741C4G-end",
|
||||
exp_perms => "0:0:0660",
|
||||
rules => <<EOF
|
||||
KERNEL=="sda", NAME="%k-%s{[dmi/id]product_name}-end"
|
||||
EOF
|
||||
},
|
||||
|
||||
|
||||
+8
-4
@@ -295,13 +295,17 @@ found:
|
||||
size_t size;
|
||||
|
||||
value[0] = '\0';
|
||||
/* read the value specified by [usb/]*/
|
||||
util_resolve_subsys_kernel(event->udev, attr, value, sizeof(value), 1);
|
||||
|
||||
val = udev_device_get_sysattr_value(event->dev, attr);
|
||||
if (val != NULL)
|
||||
util_strlcpy(value, val, sizeof(value));
|
||||
/* try to read attribute of the current device */
|
||||
if (value[0] == '\0') {
|
||||
val = udev_device_get_sysattr_value(event->dev, attr);
|
||||
if (val != NULL)
|
||||
util_strlcpy(value, val, sizeof(value));
|
||||
}
|
||||
|
||||
/* try the current device, other matches may have selected */
|
||||
/* try to read the attribute of the parent device, other matches have selected */
|
||||
if (value[0] == '\0' && event->dev_parent != NULL && event->dev_parent != event->dev) {
|
||||
val = udev_device_get_sysattr_value(event->dev_parent, attr);
|
||||
if (val != NULL)
|
||||
|
||||
Reference in New Issue
Block a user