[git commit master 1/1] login: apply PAM environment

Denys Vlasenko vda.linux at googlemail.com
Mon Dec 27 01:13:06 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=260fb551ff4ba0cb8a5fdff848bce10588611231
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

login should apply the PAM environment modified by plugins
such as pam_env.  Other 'login's do a similar thing.

I tested this by setting some env variables with pam_env which were
correctly applied.

Signed-off-by: Ian Wienand <ianw at vmware.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 loginutils/login.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/loginutils/login.c b/loginutils/login.c
index 9a624df..c285b45 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -217,6 +217,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
 	const char *failed_msg;
 	struct passwd pwdstruct;
 	char pwdbuf[256];
+	char **pamenv;
 #endif
 
 	username[0] = '\0';
@@ -400,6 +401,16 @@ int login_main(int argc UNUSED_PARAM, char **argv)
 			(!(opt & LOGIN_OPT_p) * SETUP_ENV_CLEARENV) + SETUP_ENV_CHANGEENV,
 			pw);
 
+#if ENABLE_PAM
+	/* Modules such as pam_env will setup the PAM environment,
+	 * which should be copied into the new environment. */
+	pamenv = pam_getenvlist(pamh);
+	if (pamenv) while (*pamenv) {
+		putenv(*pamenv);
+		pamenv++;
+	}
+#endif
+
 	motd();
 
 	if (pw->pw_uid == 0)
-- 
1.7.2.2



More information about the busybox-cvs mailing list