git.lucas.co / cce-display-manager
login greeter
git clone https://git.lucas.co/cce-display-manager.git

commit4ee7a87547ae3c79a11b805d870210114a107dd9
parentf16fa3db41
authorLucas Galante <[email protected]>
date2026-05-28 21:54
Fix keyring unlocking by passing AUTHTOK and TTY to PAM handle and printing pam_env for debugging

 src/main.rs | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/main.rs b/src/main.rs
index 29aaeb0..14d90b1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1489,6 +1489,14 @@ impl PamSession {
             return Err(rc);
         }
 
+        unsafe {
+            let pass_c = std::ffi::CString::new(password).unwrap();
+            let _ = pam_sys::raw::pam_set_item(handle, pam_sys::PamItemType::AUTHTOK as libc::c_int, pass_c.as_ptr() as *const libc::c_void);
+            
+            let tty_c = std::ffi::CString::new("tty1").unwrap();
+            let _ = pam_sys::raw::pam_set_item(handle, pam_sys::PamItemType::TTY as libc::c_int, tty_c.as_ptr() as *const libc::c_void);
+        }
+
         Ok(Self { handle, _data: data, has_open_session: false })
     }
 
@@ -1681,6 +1689,7 @@ fn run_daemon() {
             }
 
             let pam_env = auth.get_env();
+            println!("[clear-display-manager] PAM Environment variables: {:?}", pam_env);
 
             let user = match users::get_user_by_name(&username) {
                 Some(u) => u,