]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
pam_systemd: drop "uid" field from SessionContext
authorLennart Poettering <lennart@poettering.net>
Fri, 15 Nov 2024 13:39:11 +0000 (14:39 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 17 Dec 2024 16:52:11 +0000 (17:52 +0100)
Let's instead just pass over the UserRecord, it's a much more useful
object with lots more information we'll sooner or later need
(preparation for later commits).

src/login/pam_systemd.c

index fd27d0ff810470f186514bd25bd95ef8fc6d1fea..e218fdbc0c431e9170231bd87619c72c97a60c5a 100644 (file)
@@ -846,7 +846,6 @@ static uint64_t pick_default_capability_ambient_set(
 }
 
 typedef struct SessionContext {
-        const uid_t uid;
         const char *service;
         const char *type;
         const char *class;
@@ -868,6 +867,7 @@ typedef struct SessionContext {
 static int create_session_message(
                 sd_bus *bus,
                 pam_handle_t *handle,
+                UserRecord *ur,
                 const SessionContext *context,
                 bool avoid_pidfd,
                 sd_bus_message **ret) {
@@ -878,6 +878,7 @@ static int create_session_message(
 
         assert(bus);
         assert(handle);
+        assert(ur);
         assert(context);
         assert(ret);
 
@@ -893,7 +894,7 @@ static int create_session_message(
 
         r = sd_bus_message_append(m,
                                   pidfd >= 0 ? "uhsssssussbss" : "uusssssussbss",
-                                  (uint32_t) context->uid,
+                                  (uint32_t) ur->uid,
                                   pidfd >= 0 ? pidfd : 0,
                                   context->service,
                                   context->type,
@@ -1120,7 +1121,6 @@ _public_ PAM_EXTERN int pam_sm_open_session(
                          strna(memory_max), strna(tasks_max), strna(cpu_weight), strna(io_weight), strna(runtime_max_sec));
 
         const SessionContext context = {
-                .uid = ur->uid,
                 .service = service,
                 .type = type,
                 .class = class,
@@ -1141,6 +1141,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
 
         r = create_session_message(bus,
                                    handle,
+                                   ur,
                                    &context,
                                    /* avoid_pidfd = */ false,
                                    &m);
@@ -1156,6 +1157,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
                 m = sd_bus_message_unref(m);
                 r = create_session_message(bus,
                                            handle,
+                                           ur,
                                            &context,
                                            /* avoid_pidfd = */ true,
                                            &m);