From 05188f9029780396097d5355198b8ec818852353 Mon Sep 17 00:00:00 2001
From: Ryan Wilson <ryantimwilson@meta.com>
Date: Tue, 12 Nov 2024 22:17:53 -0800
Subject: [PATCH] pam_systemd: Make pam_systemd 256 backwards compatible to
logind 255
---
src/login/pam_systemd.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
index a711c89b12..7222d5a0df 100644
--- a/src/login/pam_systemd.c
+++ b/src/login/pam_systemd.c
@@ -1124,6 +1124,25 @@ _public_ PAM_EXTERN int pam_sm_open_session(
r = sd_bus_call(bus, m, LOGIN_SLOW_BUS_CALL_TIMEOUT_USEC, &error, &reply);
}
+ if (r < 0 && sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)) {
+ SessionContext context2 = context;
+ context2.class = "";
+
+ sd_bus_error_free(&error);
+ pam_debug_syslog(handle, debug,
+ "New session classes are not available, retrying after unsetting class.");
+
+ m = sd_bus_message_unref(m);
+ r = create_session_message(bus,
+ handle,
+ &context2,
+ /* avoid_pidfd = */ true,
+ &m);
+ if (r < 0)
+ return pam_bus_log_create_error(handle, r);
+
+ r = sd_bus_call(bus, m, LOGIN_SLOW_BUS_CALL_TIMEOUT_USEC, &error, &reply);
+ }
if (r < 0) {
if (sd_bus_error_has_name(&error, BUS_ERROR_SESSION_BUSY)) {
/* We are already in a session, don't do anything */
--
2.43.5