Jan F 3f220f
diff -up openssh-5.8p1/session.c.pwchange openssh-5.8p1/session.c
Jan F c7ffe0
--- openssh-5.8p1/session.c.pwchange	2011-04-20 10:46:50.144658782 +0200
Jan F c7ffe0
+++ openssh-5.8p1/session.c	2011-04-20 11:36:09.055648048 +0200
Jan F c7ffe0
@@ -1542,11 +1542,27 @@ do_setusercontext(struct passwd *pw)
Jan F c7ffe0
 static void
Jan F c7ffe0
 do_pwchange(Session *s)
Jan F c7ffe0
 {
Jan F c7ffe0
+#ifdef WITH_SELINUX
Jan F c7ffe0
+	pid_t pid;
Jan F c7ffe0
+#endif
Jan F c7ffe0
+
Jan F c7ffe0
 	fflush(NULL);
Jan F c7ffe0
 	fprintf(stderr, "WARNING: Your password has expired.\n");
Jan F 3f220f
 	if (s->ttyfd != -1) {
Jan F 3f220f
 		fprintf(stderr,
Jan F 3f220f
 		    "You must change your password now and login again!\n");
Jan F c7ffe0
+#ifdef WITH_SELINUX
Jan F c7ffe0
+		switch (pid = fork()) {
Jan F c7ffe0
+			case -1:
Jan F c7ffe0
+				fatal("cannot fork");
Jan F c7ffe0
+			case 0:
Jan F c7ffe0
+				setexeccon(NULL);
Jan F c7ffe0
+				break;
Jan F c7ffe0
+			default:
Jan F c7ffe0
+				waitpid(pid, NULL, 0);
Jan F c7ffe0
+				exit(0);
Jan F c7ffe0
+		}
Jan F c7ffe0
+#endif
Jan F 3f220f
 #ifdef PASSWD_NEEDS_USERNAME
Jan F 3f220f
 		execl(_PATH_PASSWD_PROG, "passwd", s->pw->pw_name,
Jan F 3f220f
 		    (char *)NULL);