chiark / gitweb /
udev-acl: Correctly handle ENV{ACL_MANAGE}==0
authorMartin Pitt <martin.pitt@ubuntu.com>
Wed, 3 Mar 2010 23:48:59 +0000 (00:48 +0100)
committerMartin Pitt <martin.pitt@ubuntu.com>
Wed, 3 Mar 2010 23:48:59 +0000 (00:48 +0100)
When a custom rule sets ACL_MANAGE to 0 to disable ACL management for a
particular device, handle this as "disabled", by explicitly checking against
"1" instead of "nonempty".

Thanks to RafaƂ Rzepecki for pointing this out.

extras/udev-acl/70-acl.rules
extras/udev-acl/udev-acl.c

index 8380f53eb330446c7abe04d069291e4ef8610f94..874667c5b12cb0f355cdc898f77095a218ffa89f 100644 (file)
@@ -69,7 +69,7 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c02", ENV{ACL_MANAG
 ENV{COLOR_MEASUREMENT_DEVICE}=="*?", ENV{ACL_MANAGE}="1"
 
 # apply ACL for all locally logged in users
 ENV{COLOR_MEASUREMENT_DEVICE}=="*?", ENV{ACL_MANAGE}="1"
 
 # apply ACL for all locally logged in users
-LABEL="acl_apply", ENV{ACL_MANAGE}=="?*", TEST=="/var/run/ConsoleKit/database", \
+LABEL="acl_apply", ENV{ACL_MANAGE}=="1", TEST=="/var/run/ConsoleKit/database", \
   RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}"
 
 LABEL="acl_end"
   RUN+="udev-acl --action=$env{ACTION} --device=$env{DEVNAME}"
 
 LABEL="acl_end"
index e670ce707fa0edd76bf55983cb3c89c6de1b80bd..c070fccd17a6b45efd750cf720950497d809af19 100644 (file)
@@ -289,7 +289,7 @@ static void apply_acl_to_devices(uid_t uid, int add)
        /* iterate over all devices tagged with ACL_SET */
        udev = udev_new();
        enumerate = udev_enumerate_new(udev);
        /* iterate over all devices tagged with ACL_SET */
        udev = udev_new();
        enumerate = udev_enumerate_new(udev);
-       udev_enumerate_add_match_property(enumerate, "ACL_MANAGE", "*");
+       udev_enumerate_add_match_property(enumerate, "ACL_MANAGE", "1");
        udev_enumerate_scan_devices(enumerate);
        udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
                struct udev_device *device;
        udev_enumerate_scan_devices(enumerate);
        udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
                struct udev_device *device;