chiark / gitweb /
logind: expose missing signals in Session bus objects
[elogind.git] / src / login / pam-module.c
index d7f412860a10b9615cc4a3ca850ceea3f9d1f453..af108c46d59aa4f9babf61b96f0efa7596610aea 100644 (file)
@@ -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);
@@ -452,6 +458,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
                 tty = "";
         }
 
+        /* If this fails vtnr will be 0, that's intended */
         if (!isempty(cvtnr))
                 safe_atou32(cvtnr, &vtnr);
 
@@ -466,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";