X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudev-node.c;h=030e45919895c427d9bfc3ad28e96b3ce3d839b7;hb=0c124f8b2c93d2c7d6eefca3bdc59b28250fc077;hp=8ef788954d12de171badb72112695af975ad8797;hpb=543afdc63c02a5af3cf6bd2a264162f23474346a;p=elogind.git diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 8ef788954..030e45919 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -88,11 +88,11 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s err = mkdir_parents_label(slink, 0755); if (err != 0 && err != -ENOENT) break; - label_context_set(slink, S_IFLNK); + mac_selinux_create_file_prepare(slink, S_IFLNK); err = symlink(target, slink); if (err != 0) err = -errno; - label_context_clear(); + mac_selinux_create_file_clear(); } while (err == -ENOENT); if (err == 0) goto exit; @@ -105,11 +105,11 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s err = mkdir_parents_label(slink_tmp, 0755); if (err != 0 && err != -ENOENT) break; - label_context_set(slink_tmp, S_IFLNK); + mac_selinux_create_file_prepare(slink_tmp, S_IFLNK); err = symlink(target, slink_tmp); if (err != 0) err = -errno; - label_context_clear(); + mac_selinux_create_file_clear(); } while (err == -ENOENT); if (err != 0) { log_error("symlink '%s' '%s' failed: %m", target, slink_tmp); @@ -294,21 +294,26 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, /* apply SECLABEL{$module}=$label */ udev_list_entry_foreach(entry, udev_list_get_entry(seclabel_list)) { const char *name, *label; + int r; name = udev_list_entry_get_name(entry); label = udev_list_entry_get_value(entry); if (streq(name, "selinux")) { selinux = true; - if (label_apply(devnode, label) < 0) - log_error("SECLABEL: failed to set SELinux label '%s'", label); + + r = mac_selinux_apply(devnode, label); + if (r < 0) + log_error("SECLABEL: failed to set SELinux label '%s': %s", label, strerror(-r)); else log_debug("SECLABEL: set SELinux label '%s'", label); } else if (streq(name, "smack")) { smack = true; - if (smack_label_path(devnode, label) < 0) - log_error("SECLABEL: failed to set SMACK label '%s'", label); + + r = mac_smack_apply(devnode, label); + if (r < 0) + log_error("SECLABEL: failed to set SMACK label '%s': %s", label, strerror(-r)); else log_debug("SECLABEL: set SMACK label '%s'", label); @@ -318,9 +323,9 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, /* set the defaults */ if (!selinux) - label_fix(devnode, true, false); + mac_selinux_fix(devnode, true, false); if (!smack) - smack_label_path(devnode, NULL); + mac_smack_apply(devnode, NULL); } /* always update timestamp when we re-use the node, like on media change events */