summaryrefslogtreecommitdiff
path: root/src/udev
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2014-04-02 15:47:09 +0200
committerKay Sievers <kay@vrfy.org>2014-04-02 15:47:09 +0200
commitca2bb1606a170ce2e45de1345b0119bd220f4f0d (patch)
treedf6c08217650f5ba7572e48deeb94082b7cb1347 /src/udev
parentbc29e507e2731d594ab577d04c13d771b39fa0c1 (diff)
udev: do not export "static node" tags for non-existing devices
Diffstat (limited to 'src/udev')
-rw-r--r--src/udev/udev-rules.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index 26302640a6..17f47f2613 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -2555,10 +2555,15 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
struct stat stats;
/* we assure, that the permissions tokens are sorted before the static token */
+
if (mode == 0 && uid == 0 && gid == 0 && tags == NULL)
goto next;
strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL);
+ if (stat(device_node, &stats) != 0)
+ break;
+ if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
+ break;
/* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
if (tags) {
@@ -2588,11 +2593,6 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
if (mode == 0 && uid == 0 && gid == 0)
break;
- if (stat(device_node, &stats) != 0)
- break;
- if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
- break;
-
if (mode == 0) {
if (gid > 0)
mode = 0660;