From 78ced241ebeba8574b95714861d2aedc986ca323 Mon Sep 17 00:00:00 2001 From: Firstyear Date: Tue, 5 Nov 2024 10:49:33 +1000 Subject: [PATCH] Resolve pam services not always having a tty (#3176) --- unix_integration/common/src/unix_proto.rs | 5 +++-- unix_integration/pam_kanidm/src/pam/module.rs | 2 +- unix_integration/resolver/src/bin/kanidm-unix.rs | 2 +- unix_integration/resolver/src/resolver.rs | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/unix_integration/common/src/unix_proto.rs b/unix_integration/common/src/unix_proto.rs index 95ca4035d..69f88c100 100644 --- a/unix_integration/common/src/unix_proto.rs +++ b/unix_integration/common/src/unix_proto.rs @@ -106,7 +106,8 @@ pub enum PamAuthRequest { #[derive(Serialize, Deserialize, Debug)] pub struct PamServiceInfo { pub service: String, - pub tty: String, + // Somehow SDDM doesn't set this ... + pub tty: Option, // Only set if it really is a remote host? pub rhost: Option, } @@ -147,7 +148,7 @@ impl ClientRequest { "PamAuthenticateInit{{ account_id={} tty={} pam_secvice{} rhost={} }}", account_id, info.service, - info.tty, + info.tty.as_deref().unwrap_or(""), info.rhost.as_deref().unwrap_or("") ), ClientRequest::PamAuthenticateStep(_) => "PamAuthenticateStep".to_string(), diff --git a/unix_integration/pam_kanidm/src/pam/module.rs b/unix_integration/pam_kanidm/src/pam/module.rs index 1916a9318..c1b34a3f4 100755 --- a/unix_integration/pam_kanidm/src/pam/module.rs +++ b/unix_integration/pam_kanidm/src/pam/module.rs @@ -256,7 +256,7 @@ impl PamHandle { tracing::debug!(?maybe_tty, ?maybe_rhost, ?maybe_service); match (maybe_tty, maybe_rhost, maybe_service) { - (Some(tty), rhost, Some(service)) => Ok(PamServiceInfo { + (tty, rhost, Some(service)) => Ok(PamServiceInfo { service, tty, rhost, diff --git a/unix_integration/resolver/src/bin/kanidm-unix.rs b/unix_integration/resolver/src/bin/kanidm-unix.rs index 70621d6ea..9c377149b 100644 --- a/unix_integration/resolver/src/bin/kanidm-unix.rs +++ b/unix_integration/resolver/src/bin/kanidm-unix.rs @@ -67,7 +67,7 @@ async fn main() -> ExitCode { account_id: account_id.clone(), info: PamServiceInfo { service: "kanidm-unix".to_string(), - tty: "/dev/null".to_string(), + tty: None, rhost: None, }, }; diff --git a/unix_integration/resolver/src/resolver.rs b/unix_integration/resolver/src/resolver.rs index 2494055d3..00eea4661 100644 --- a/unix_integration/resolver/src/resolver.rs +++ b/unix_integration/resolver/src/resolver.rs @@ -1086,7 +1086,7 @@ impl Resolver { let pam_info = PamServiceInfo { service: "kanidm-unix-test".to_string(), - tty: "/dev/null".to_string(), + tty: Some("/dev/null".to_string()), rhost: None, };