All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] selinux_init_load_policy: setenforce(0) if security_disable() fails
@ 2014-04-29 15:59 Will Woods
  2014-04-30 13:37 ` Daniel J Walsh
  2014-05-13 14:56 ` Stephen Smalley
  0 siblings, 2 replies; 4+ messages in thread
From: Will Woods @ 2014-04-29 15:59 UTC (permalink / raw)
  To: selinux; +Cc: Stephen Smalley

If you run selinux_init_load_policy() after a chroot/switch-root, it's
possible that your *previous* root loaded policy, but your *new* root
wants SELinux disabled.

We can't disable SELinux in this case, but we *do* need to make sure
it's permissive. Otherwise we may continue to enforce the old policy.

So, if seconfig = -1, but security_disable() fails, we set *enforce=0,
and then let the existing code handle the security_{get,set}enforce
stuff.

Once that's handled, exit with failure via "goto noload", as before.
---
 libselinux/src/load_policy.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/libselinux/src/load_policy.c b/libselinux/src/load_policy.c
index e419f1a..21ee58b 100644
--- a/libselinux/src/load_policy.c
+++ b/libselinux/src/load_policy.c
@@ -417,13 +417,15 @@ int selinux_init_load_policy(int *enforce)
 			/* Successfully disabled, so umount selinuxfs too. */
 			umount(selinux_mnt);
 			fini_selinuxmnt();
+			goto noload;
+		} else {
+			/*
+			 * It's possible that this failed because policy has
+			 * already been loaded. We can't disable SELinux now,
+			 * so the best we can do is force it to be permissive.
+			 */
+			*enforce = 0;
 		}
-		/*
-		 * If we failed to disable, SELinux will still be 
-		 * effectively permissive, because no policy is loaded. 
-		 * No need to call security_setenforce(0) here.
-		 */
-		goto noload;
 	}
 
 	/*
@@ -442,6 +444,9 @@ int selinux_init_load_policy(int *enforce)
 		}
 	}
 
+	if (seconfig == -1)
+		goto noload;
+
 	/* Load the policy. */
 	return selinux_mkload_policy(0);
 
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-05-13 14:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-29 15:59 [PATCH] selinux_init_load_policy: setenforce(0) if security_disable() fails Will Woods
2014-04-30 13:37 ` Daniel J Walsh
2014-04-30 15:26   ` Will Woods
2014-05-13 14:56 ` Stephen Smalley

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.