Blob Blame History Raw
diff -up openssh-5.9p1/session.c.privsep-selinux openssh-5.9p1/session.c
--- openssh-5.9p1/session.c.privsep-selinux	2012-08-01 15:36:33.397565915 +0200
+++ openssh-5.9p1/session.c	2012-08-02 18:18:15.038094629 +0200
@@ -1536,6 +1536,13 @@ do_setusercontext(struct passwd *pw)
 		/* Permanently switch to the desired uid. */
 		permanently_set_uid(pw);
 #endif
+
+#ifdef WITH_SELINUX
+		if (options.chroot_directory == NULL ||
+		    strcasecmp(options.chroot_directory, "none") == 0) {
+			ssh_selinux_copy_context();
+		}
+#endif
 	}
 
 	if (getuid() != pw->pw_uid || geteuid() != pw->pw_uid)
diff -up openssh-5.9p1/sshd.c.privsep-selinux openssh-5.9p1/sshd.c
--- openssh-5.9p1/sshd.c.privsep-selinux	2012-08-01 16:09:22.949423356 +0200
+++ openssh-5.9p1/sshd.c	2012-08-02 18:07:22.912225684 +0200
@@ -790,6 +790,14 @@ privsep_postauth(Authctxt *authctxt)
 	do_setusercontext(authctxt->pw);
 
  skip:
+#ifdef WITH_SELINUX
+	/* switch SELinux content for root too */
+	if (authctxt->pw->pw_uid == 0 && (options.chroot_directory == NULL ||
+	    strcasecmp(options.chroot_directory, "none") == 0)) {
+		ssh_selinux_copy_context();
+	}
+#endif
+
 	/* It is safe now to apply the key state */
 	monitor_apply_keystate(pmonitor);