From 79d860fe78ff9e53fe3150fb55a8a8b03c4f6470 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 26 Mar 2013 11:36:31 +0100 Subject: 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://bugs.freedesktop.org/show_bug.cgi?id=62754 --- src/shared/util.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/shared') diff --git a/src/shared/util.h b/src/shared/util.h index 7c3da08dd8..4c4aed583e 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #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; +} -- cgit v1.2.3-54-g00ecf