X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev_selinux.c;h=eec950194c3e7cd7bf62aac2443164544232d36e;hp=b802e1fc6ee36016824db6968129ee0041839e37;hb=d1acfc3e0afbfd138247e9e93da69e5c94821623;hpb=27b77df44daebbd7597c572343105c16de099233 diff --git a/udev_selinux.c b/udev_selinux.c index b802e1fc6..eec950194 100644 --- a/udev_selinux.c +++ b/udev_selinux.c @@ -24,8 +24,8 @@ #include #include #include -#include #include +#include #include #include "udev.h" @@ -40,7 +40,7 @@ static int is_selinux_running(void) if (selinux_enabled == -1) selinux_enabled = (is_selinux_enabled() > 0); - dbg("selinux=%i", selinux_enabled); + dbg("selinux=%i\n", selinux_enabled); return selinux_enabled; } @@ -90,10 +90,12 @@ void selinux_setfilecon(const char *file, const char *devname, unsigned int mode char *media; int ret = -1; - media = get_media(devname, mode); - if (media) { - ret = matchmediacon(media, &scontext); - free(media); + if (devname) { + media = get_media(devname, mode); + if (media) { + ret = matchmediacon(media, &scontext); + free(media); + } } if (ret < 0) @@ -102,8 +104,8 @@ void selinux_setfilecon(const char *file, const char *devname, unsigned int mode return; } - if (setfilecon(file, scontext) < 0) - err("setfilecon %s failed: %s", file, strerror(errno)); + if (lsetfilecon(file, scontext) < 0) + err("setfilecon %s failed: %s\n", file, strerror(errno)); freecon(scontext); } @@ -116,10 +118,12 @@ void selinux_setfscreatecon(const char *file, const char *devname, unsigned int char *media; int ret = -1; - media = get_media(devname, mode); - if (media) { - ret = matchmediacon(media, &scontext); - free(media); + if (devname) { + media = get_media(devname, mode); + if (media) { + ret = matchmediacon(media, &scontext); + free(media); + } } if (ret < 0) @@ -129,7 +133,7 @@ void selinux_setfscreatecon(const char *file, const char *devname, unsigned int } if (setfscreatecon(scontext) < 0) - err("setfscreatecon %s failed: %s", file, strerror(errno)); + err("setfscreatecon %s failed: %s\n", file, strerror(errno)); freecon(scontext); } @@ -139,7 +143,7 @@ void selinux_resetfscreatecon(void) { if (is_selinux_running()) { if (setfscreatecon(prev_scontext) < 0) - err("setfscreatecon failed: %s", strerror(errno)); + err("setfscreatecon failed: %s\n", strerror(errno)); } } @@ -150,6 +154,8 @@ void selinux_init(void) * restoration creation purposes. */ if (is_selinux_running()) { + if (!udev_root[0]) + err("selinux_init: udev_root not set\n"); matchpathcon_init_prefix(NULL, udev_root); if (getfscreatecon(&prev_scontext) < 0) { err("getfscreatecon failed\n");