From: Lennart Poettering Date: Mon, 1 Oct 2012 18:50:00 +0000 (-0400) Subject: pam: check environ[] for XDG_SEAT as fallback X-Git-Tag: v194~24 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=a8573ccc35a4efe8900be5d48c6c803670540c2b;p=elogind.git 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. --- diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 0d387918c..af108c46d 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";