- (djm) Move PAM init to after fork for non-Solaris derived PAMs
diff --git a/session.c b/session.c
index ee14afa..d4053b4 100644
--- a/session.c
+++ b/session.c
@@ -487,7 +487,8 @@
 
 	session_proctitle(s);
 
-#ifdef USE_PAM
+#if defined(USE_PAM) && defined(PAM_SUN_CODEBASE)
+	/* Solaris-derived PAMs don't like doing this after the fork() */
 	do_pam_setcred();
 #endif /* USE_PAM */
 
@@ -603,10 +604,11 @@
 	ptyfd = s->ptyfd;
 	ttyfd = s->ttyfd;
 
-#ifdef USE_PAM
+#if defined(USE_PAM) && defined(PAM_SUN_CODEBASE)
+	/* Solaris-derived PAMs don't like doing this after the fork() */
 	do_pam_session(pw->pw_name, s->tty);
 	do_pam_setcred();
-#endif /* USE_PAM */
+#endif
 
 	/* Fork the child. */
 	if ((pid = fork()) == 0) {
@@ -1032,6 +1034,11 @@
 #endif /* WITH_IRIX_ARRAY */
 #endif /* WITH_IRIX_JOBS */
 
+#if defined(USE_PAM) && !defined(PAM_SUN_CODEBASE)
+	/* Solaris-derived PAMs don't like doing this after the fork() */
+	do_pam_session(pw->pw_name, s->tty);
+	do_pam_setcred();
+#endif
 
 	/* login(1) is only called if we execute the login shell */
 	if (options.use_login && command != NULL)