From: Zbigniew Jędrzejewski-Szmek Date: Fri, 19 May 2017 00:58:23 +0000 (-0400) Subject: sd-login: read list of uids of sessions from UIDS not ACTIVE_SESSIONS X-Git-Tag: chiark/234.4-1+devuan1.1+iwj1~129 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=117331cd464206823ab57e24529ee8d3b696e806 sd-login: read list of uids of sessions from UIDS not ACTIVE_SESSIONS As described by Luke Shumaker: sd_seat_get_sessions looks at /run/elogind/seats/${seat_name}:SESSIONS to get the list of sessions (which I believe is correct), and at /run/elogind/seats/${seat_name}:ACTIVE_SESSIONS for the list of users (which I believe is incorrect); I believe that it should look at the UIDS field for the list of users. As far as I can tell, the ACTIVE_SESSIONS field is never even present in the seats file. I also believe that this has been broken since the function was first committed almost 6 years ago. Fixes #5743. --- diff --git a/src/libelogind/sd-login/sd-login.c b/src/libelogind/sd-login/sd-login.c index c431384b4..4da667cbc 100644 --- a/src/libelogind/sd-login/sd-login.c +++ b/src/libelogind/sd-login/sd-login.c @@ -739,7 +739,7 @@ _public_ int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **ui r = parse_env_file(p, NEWLINE, "SESSIONS", &s, - "ACTIVE_SESSIONS", &t, + "UIDS", &t, NULL); if (r == -ENOENT) return -ENXIO;