From a8573ccc35a4efe8900be5d48c6c803670540c2b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Oct 2012 14:50:00 -0400 Subject: [PATCH] pam: check environ[] for XDG_SEAT as fallback This is useful for systems such as kmscon which want to invoke classic /sbin/login but use it on multiple seats. --- src/login/pam-module.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 0d387918c7..af108c46d5 100644 --- a/src/login/pam-module.c +++ b/src/login/pam-module.c @@ -428,8 +428,14 @@ _public_ PAM_EXTERN int pam_sm_open_session( pam_get_item(handle, PAM_TTY, (const void**) &tty); pam_get_item(handle, PAM_RUSER, (const void**) &remote_user); pam_get_item(handle, PAM_RHOST, (const void**) &remote_host); + seat = pam_getenv(handle, "XDG_SEAT"); + if (isempty(seat)) + seat = getenv("XDG_SEAT"); + cvtnr = pam_getenv(handle, "XDG_VTNR"); + if (isempty(cvtnr)) + cvtnr = getenv("XDG_VTNR"); service = strempty(service); tty = strempty(tty); @@ -467,6 +473,8 @@ _public_ PAM_EXTERN int pam_sm_open_session( !isempty(tty) ? "tty" : "unspecified"; class = pam_getenv(handle, "XDG_SESSION_CLASS"); + if (isempty(class)) + class = getenv("XDG_SESSION_CLASS"); if (isempty(class)) class = "user";