diff --git a/src/shared/label.c b/src/shared/label.c index e13eba6550..3e5ea67469 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 3f880e363a..90b49ffbe0 100644 --- a/src/shared/label.h +++ b/src/shared/label.h @@ -26,7 +26,7 @@ #include #include -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 64bb5cbc3b..551f7564f1 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 5217d7f9dd..fafa31bba4 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 0d85960e63..f6707a5ccb 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;