diff --git a/src/login/logind-utmp.c b/src/login/logind-utmp.c index ccea8f968f..138c01e9b2 100644 --- a/src/login/logind-utmp.c +++ b/src/login/logind-utmp.c @@ -43,19 +43,17 @@ _const_ static usec_t when_wall(usec_t n, usec_t elapse) { } bool logind_wall_tty_filter(const char *tty, bool is_local, void *userdata) { - Manager *m = userdata; - const char *p; + Manager *m = ASSERT_PTR(userdata); - assert(m); - - if (!m->scheduled_shutdown_tty) - return true; - - p = path_startswith(tty, "/dev/"); + const char *p = path_startswith(tty, "/dev/"); if (!p) return true; - return !streq(p, m->scheduled_shutdown_tty); + /* Do not write to local pseudo-terminals */ + if (startswith(p, "pts/") && is_local) + return false; + + return !streq_ptr(p, m->scheduled_shutdown_tty); } static int warn_wall(Manager *m, usec_t n) {