PAM, uaccess: check for logind, not for systemd

It is possible to build systemd without logind or run logind without systemd
init. Commit 66e41181 fixed sd_booted() to only succeed for systemd init; with
that, testing for systemd init is wrong in the parts that talk to logind.

In particular, this affects the PAM module and the "uaccess" udev builtin.
Change sd_booted() to a new logind_running() which tests for
/run/systemd/seats/.

For details, see:
<https://mail.gnome.org/archives/desktop-devel-list/2013-March/msg00092.html>

https://bugs.freedesktop.org/show_bug.cgi?id=62754
This commit is contained in:
Martin Pitt
2013-04-05 18:16:58 +02:00
parent 9e542e0b3a
commit 79d860fe78
3 changed files with 8 additions and 6 deletions
+5
View File
@@ -36,6 +36,7 @@
#include <dirent.h>
#include <sys/resource.h>
#include <stddef.h>
#include <unistd.h>
#include <systemd/sd-journal.h>
#include "macro.h"
@@ -639,3 +640,7 @@ static inline void _reset_umask_(struct umask_struct *s) {
static inline unsigned u64log2(uint64_t n) {
return (n > 1) ? __builtin_clzll(n) ^ 63U : 0;
}
static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0;
}