[systemd-commits] src/shared src/test src/udev

Lennart Poettering lennart at kemper.freedesktop.org
Wed May 30 16:46:27 PDT 2012


 src/shared/label.c   |    6 +++---
 src/shared/label.h   |    2 +-
 src/test/test-udev.c |    3 ++-
 src/udev/udevadm.c   |    4 +++-
 src/udev/udevd.c     |    3 ++-
 5 files changed, 11 insertions(+), 7 deletions(-)

New commits:
commit 9b5af248f04b6cad8a5bca836e89a39e9f6823d9
Author: Daniel J Walsh <dwalsh at redhat.com>
Date:   Wed May 30 16:13:48 2012 -0400

    label: fix systemd-udev labeling of /run directory.
    
    systemd-udev is currently incorrectly labeling /run/udev/* content because it is
    using selinux prefix labeling of /dev.  This patch will allow systemd-udev to
    use prefix labeling of /dev and /run.

diff --git a/src/shared/label.c b/src/shared/label.c
index e13eba6..3e5ea67 100644
--- a/src/shared/label.c
+++ b/src/shared/label.c
@@ -52,7 +52,7 @@ void label_retest_selinux(void) {
 
 #endif
 
-int label_init(const char *prefix) {
+int label_init(const char *prefixes[]) {
         int r = 0;
 
 #ifdef HAVE_SELINUX
@@ -68,9 +68,9 @@ int label_init(const char *prefix) {
         before_mallinfo = mallinfo();
         before_timestamp = now(CLOCK_MONOTONIC);
 
-        if (prefix) {
+        if (prefixes) {
                 struct selinux_opt options[] = {
-                        { .type = SELABEL_OPT_SUBSET, .value = prefix },
+                        { .type = SELABEL_OPT_SUBSET, .values = prefixes },
                 };
 
                 label_hnd = selabel_open(SELABEL_CTX_FILE, options, ELEMENTSOF(options));
diff --git a/src/shared/label.h b/src/shared/label.h
index 3f880e3..90b49ff 100644
--- a/src/shared/label.h
+++ b/src/shared/label.h
@@ -26,7 +26,7 @@
 #include <stdbool.h>
 #include <sys/socket.h>
 
-int label_init(const char *prefix);
+int label_init(const char *prefixes[]);
 void label_finish(void);
 
 int label_fix(const char *path, bool ignore_enoent);
diff --git a/src/test/test-udev.c b/src/test/test-udev.c
index 64bb5cb..551f756 100644
--- a/src/test/test-udev.c
+++ b/src/test/test-udev.c
@@ -45,12 +45,13 @@ int main(int argc, char *argv[])
         const char *action;
         sigset_t mask, sigmask_orig;
         int err = -EINVAL;
+        const char *prefixes[] = { "/dev", "/run", NULL };
 
         udev = udev_new();
         if (udev == NULL)
                 exit(EXIT_FAILURE);
         log_debug("version %s\n", VERSION);
-        label_init("/dev");
+        label_init(prefixes);
 
         sigprocmask(SIG_SETMASK, NULL, &sigmask_orig);
 
diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c
index 5217d7f..fafa31b 100644
--- a/src/udev/udevadm.c
+++ b/src/udev/udevadm.c
@@ -91,6 +91,7 @@ int main(int argc, char *argv[])
                 { "version", no_argument, NULL, 'V' },
                 {}
         };
+        const char *prefixes[] = { "/dev", "/run", NULL };
         const char *command;
         unsigned int i;
         int rc = 1;
@@ -102,7 +103,8 @@ int main(int argc, char *argv[])
         log_open();
         log_parse_environment();
         udev_set_log_fn(udev, udev_main_log);
-        label_init("/dev");
+
+        label_init(prefixes);
 
         for (;;) {
                 int option;
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 0d85960..f6707a5 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -1030,6 +1030,7 @@ int main(int argc, char *argv[])
         int fd_ctrl = -1;
         int fd_netlink = -1;
         int fd_worker = -1;
+        const char *prefixes[] = { "/dev", "/run", NULL };
         struct epoll_event ep_ctrl, ep_inotify, ep_signal, ep_netlink, ep_worker;
         struct udev_ctrl_connection *ctrl_conn = NULL;
         int rc = 1;
@@ -1042,7 +1043,7 @@ int main(int argc, char *argv[])
         log_parse_environment();
         udev_set_log_fn(udev, udev_main_log);
         log_debug("version %s\n", VERSION);
-        label_init("/dev");
+        label_init(prefixes);
 
         for (;;) {
                 int option;



More information about the systemd-commits mailing list