logind: do not fail creating a session when request is not from a unit

When running inside an LXC container the 'su' process will not be part of
any unit or slice.

manager_get_user_by_pid() which was used until v255 (included) does not fail
if it cannot find a unit/slice, but simply returns 'not found'. Do the same
in manager_get_session_by_pidref().

This was not detected as Semaphore CI does not reboot the testbed before
the logind test, so the session is started by the old logind from the base
distro, instead of the one being tested.

Follow-up for 8494f562c8
Follow-up for 5099a50d43

Fixes https://github.com/systemd/systemd/issues/32929
This commit is contained in:
Luca Boccassi
2024-05-20 13:14:50 +01:00
parent c275e01d99
commit eb56b564a0
+2 -4
View File
@@ -371,10 +371,8 @@ int manager_get_session_by_pidref(Manager *m, const PidRef *pid, Session **ret)
return r;
} else {
r = cg_pidref_get_unit(pid, &unit);
if (r < 0)
return r;
s = hashmap_get(m->session_units, unit);
if (r >= 0)
s = hashmap_get(m->session_units, unit);
}
if (ret)