chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
cd42b50
)
libudev: initialize selinux only when needed
author
Kay Sievers
<kay.sievers@vrfy.org>
Fri, 26 Sep 2008 17:43:14 +0000
(19:43 +0200)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Fri, 26 Sep 2008 17:43:14 +0000
(19:43 +0200)
udev/lib/libudev.c
patch
|
blob
|
history
diff --git
a/udev/lib/libudev.c
b/udev/lib/libudev.c
index 3ff6cabbb01a7ed5e785502be10e14671a2569d0..4fd8196bd93eb2c9e7e4faf2bbf73e276bea699a 100644
(file)
--- a/
udev/lib/libudev.c
+++ b/
udev/lib/libudev.c
@@
-43,6
+43,7
@@
struct udev {
char *rules_path;
int log_priority;
#ifdef USE_SELINUX
char *rules_path;
int log_priority;
#ifdef USE_SELINUX
+ int selinux_initialized;
int selinux_enabled;
security_context_t selinux_prev_scontext;
#endif
int selinux_enabled;
security_context_t selinux_prev_scontext;
#endif
@@
-87,6
+88,7
@@
static void selinux_init(struct udev *udev)
udev->selinux_prev_scontext = NULL;
}
}
udev->selinux_prev_scontext = NULL;
}
}
+ udev->selinux_initialized = 1;
#endif
}
#endif
}
@@
-107,6
+109,8
@@
void udev_set_userdata(struct udev *udev, void *userdata)
static void selinux_exit(struct udev *udev)
{
#ifdef USE_SELINUX
static void selinux_exit(struct udev *udev)
{
#ifdef USE_SELINUX
+ if (!udev->selinux_initialized)
+ return;
if (udev->selinux_enabled) {
freecon(udev->selinux_prev_scontext);
udev->selinux_prev_scontext = NULL;
if (udev->selinux_enabled) {
freecon(udev->selinux_prev_scontext);
udev->selinux_prev_scontext = NULL;
@@
-117,6
+121,8
@@
static void selinux_exit(struct udev *udev)
void udev_selinux_lsetfilecon(struct udev *udev, const char *file, unsigned int mode)
{
#ifdef USE_SELINUX
void udev_selinux_lsetfilecon(struct udev *udev, const char *file, unsigned int mode)
{
#ifdef USE_SELINUX
+ if (!udev->selinux_initialized)
+ selinux_init(udev);
if (udev->selinux_enabled) {
security_context_t scontext = NULL;
if (udev->selinux_enabled) {
security_context_t scontext = NULL;
@@
-134,6
+140,8
@@
void udev_selinux_lsetfilecon(struct udev *udev, const char *file, unsigned int
void udev_selinux_setfscreatecon(struct udev *udev, const char *file, unsigned int mode)
{
#ifdef USE_SELINUX
void udev_selinux_setfscreatecon(struct udev *udev, const char *file, unsigned int mode)
{
#ifdef USE_SELINUX
+ if (!udev->selinux_initialized)
+ selinux_init(udev);
if (udev->selinux_enabled) {
security_context_t scontext = NULL;
if (udev->selinux_enabled) {
security_context_t scontext = NULL;
@@
-151,6
+159,8
@@
void udev_selinux_setfscreatecon(struct udev *udev, const char *file, unsigned i
void udev_selinux_resetfscreatecon(struct udev *udev)
{
#ifdef USE_SELINUX
void udev_selinux_resetfscreatecon(struct udev *udev)
{
#ifdef USE_SELINUX
+ if (!udev->selinux_initialized)
+ selinux_init(udev);
if (udev->selinux_enabled) {
if (setfscreatecon(udev->selinux_prev_scontext) < 0)
err(udev, "setfscreatecon failed: %s\n", strerror(errno));
if (udev->selinux_enabled) {
if (setfscreatecon(udev->selinux_prev_scontext) < 0)
err(udev, "setfscreatecon failed: %s\n", strerror(errno));
@@
-307,7
+317,6
@@
struct udev *udev_new(void)
if (udev->dev_path == NULL || udev->sys_path == NULL)
goto err;
if (udev->dev_path == NULL || udev->sys_path == NULL)
goto err;
- selinux_init(udev);
info(udev, "context %p created\n", udev);
info(udev, "log_priority=%d\n", udev->log_priority);
info(udev, "config_file='%s'\n", config_file);
info(udev, "context %p created\n", udev);
info(udev, "log_priority=%d\n", udev->log_priority);
info(udev, "config_file='%s'\n", config_file);