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.
-int label_init(const char *prefix) {
+int label_init(const char *prefixes[]) {
int r = 0;
#ifdef HAVE_SELINUX
int r = 0;
#ifdef HAVE_SELINUX
before_mallinfo = mallinfo();
before_timestamp = now(CLOCK_MONOTONIC);
before_mallinfo = mallinfo();
before_timestamp = now(CLOCK_MONOTONIC);
struct selinux_opt options[] = {
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));
};
label_hnd = selabel_open(SELABEL_CTX_FILE, options, ELEMENTSOF(options));
#include <stdbool.h>
#include <sys/socket.h>
#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);
void label_finish(void);
int label_fix(const char *path, bool ignore_enoent);
const char *action;
sigset_t mask, sigmask_orig;
int err = -EINVAL;
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);
udev = udev_new();
if (udev == NULL)
exit(EXIT_FAILURE);
log_debug("version %s\n", VERSION);
sigprocmask(SIG_SETMASK, NULL, &sigmask_orig);
sigprocmask(SIG_SETMASK, NULL, &sigmask_orig);
{ "version", no_argument, NULL, 'V' },
{}
};
{ "version", no_argument, NULL, 'V' },
{}
};
+ const char *prefixes[] = { "/dev", "/run", NULL };
const char *command;
unsigned int i;
int rc = 1;
const char *command;
unsigned int i;
int rc = 1;
log_open();
log_parse_environment();
udev_set_log_fn(udev, udev_main_log);
log_open();
log_parse_environment();
udev_set_log_fn(udev, udev_main_log);
+
+ label_init(prefixes);
int fd_ctrl = -1;
int fd_netlink = -1;
int fd_worker = -1;
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;
struct epoll_event ep_ctrl, ep_inotify, ep_signal, ep_netlink, ep_worker;
struct udev_ctrl_connection *ctrl_conn = NULL;
int rc = 1;
log_parse_environment();
udev_set_log_fn(udev, udev_main_log);
log_debug("version %s\n", VERSION);
log_parse_environment();
udev_set_log_fn(udev, udev_main_log);
log_debug("version %s\n", VERSION);