]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
homed: fix home_unlocking_finish reporting success as failure
authordongshengyuan <545258830@qq.com>
Thu, 25 Jun 2026 03:30:25 +0000 (11:30 +0800)
committerLennart Poettering <lennart@poettering.net>
Thu, 25 Jun 2026 15:14:23 +0000 (17:14 +0200)
In home_unlocking_finish(), the success path calls operation_result_unref()
with the local variable r and the uninitialized error object. If either
user_record_good_authentication() or home_save_record() fails (both are
logged as "ignoring"), r is left negative and the D-Bus caller receives
an error reply despite the home having been unlocked successfully.

This causes PAM to reject the session even though the home directory is
mounted and accessible.

Fix by passing 0 and NULL — consistent with every other success path in
the file (home_locking_finish(), home_activation_finish(), etc.).

Signed-off-by: dongshengyuan <dongshengyuan@uniontech.com>
src/home/homed-home.c

index 012d65afc29f01ba6f3ecfc88cc06a06d232e089..861106dd0f9f6f09a5177d24ed73285fddf3cbdf 100644 (file)
@@ -1088,9 +1088,8 @@ static void home_unlocking_finish(Home *h, int ret, UserRecord *hr) {
 
         log_debug("Unlocking operation of %s completed.", h->user_name);
 
-        h->current_operation = operation_result_unref(h->current_operation, r, &error);
+        h->current_operation = operation_result_unref(h->current_operation, 0, NULL);
         home_set_state(h, _HOME_STATE_INVALID);
-        return;
 }
 
 static void home_authenticating_finish(Home *h, int ret, UserRecord *hr) {