Adam Tkac 6e1577d
diff -up netkit-rsh-0.17/rshd/rshd.c.pam_env netkit-rsh-0.17/rshd/rshd.c
Adam Tkac 6e1577d
--- netkit-rsh-0.17/rshd/rshd.c.pam_env	2009-03-30 13:20:36.730136943 +0200
Adam Tkac 6e1577d
+++ netkit-rsh-0.17/rshd/rshd.c	2009-03-30 13:26:17.202136832 +0200
Adam Tkac 6e1577d
@@ -107,6 +107,9 @@ char	remotehost[50] = "REMOTEHOST=";
Adam Tkac 6e1577d
 char	*envinit[] =
Adam Tkac 6e1577d
 	    {homedir, shell, path, username, remoteuser, remotehost, 0};
Adam Tkac 6e1577d
 extern	char	**environ;
Adam Tkac 6e1577d
+#ifdef USE_PAM
Adam Tkac 6e1577d
+static char** env;
Adam Tkac 6e1577d
+#endif
Adam Tkac 6e1577d
 
Adam Tkac 6e1577d
 static void error(const char *fmt, ...);
Adam Tkac 6e1577d
 static void doit(struct sockaddr_storage *fromp, socklen_t fromlen);
Adam Tkac 6e1577d
@@ -371,6 +374,9 @@ doit(struct sockaddr_storage *fromp, soc
Adam Tkac f4129d2
 	const char *hostname;
Adam Tkac f4129d2
 	u_short port;
Adam Tkac f4129d2
 	int pv[2], pid, ifd;
Adam Tkac f4129d2
+#ifdef USE_PAM
Adam Tkac f4129d2
+        int i;
Adam Tkac f4129d2
+#endif
Adam Tkac f4129d2
 
Adam Tkac f4129d2
 	signal(SIGINT, SIG_DFL);
Adam Tkac f4129d2
 	signal(SIGQUIT, SIG_DFL);
Adam Tkac 6e1577d
@@ -518,6 +524,12 @@ doit(struct sockaddr_storage *fromp, soc
Adam Tkac f4129d2
 	shellname = strrchr(theshell, '/');
Adam Tkac f4129d2
 	if (shellname) shellname++;
Adam Tkac f4129d2
 	else shellname = theshell;
Adam Tkac f4129d2
+#ifdef USE_PAM
Adam Tkac 6e1577d
+	env = pam_getenvlist(pamh);
Adam Tkac 6e1577d
+	if (NULL != env)
Adam Tkac 6e1577d
+		for(i = 0; env[i]; i++)
Adam Tkac 6e1577d
+			putenv(env[i]);
Adam Tkac f4129d2
+#endif
Adam Tkac f4129d2
 
Adam Tkac f4129d2
 	endpwent();
Adam Tkac f4129d2
 	if (paranoid) {