logind: pick up tty info from utmp only for tty sessions (#38034)

Alternative for: #38027
This commit is contained in:
Lennart Poettering
2025-07-02 22:42:56 +02:00
committed by GitHub
+4 -1
View File
@@ -43,7 +43,7 @@ int manager_read_utmp(Manager *m) {
if (!pid_is_valid(u->ut_pid))
continue;
t = strndup(u->ut_line, sizeof(u->ut_line));
t = memdup_suffix0(u->ut_line, sizeof(u->ut_line));
if (!t)
return log_oom();
@@ -59,6 +59,9 @@ int manager_read_utmp(Manager *m) {
if (manager_get_session_by_pidref(m, &PIDREF_MAKE_FROM_PID(u->ut_pid), &s) <= 0)
continue;
if (s->type != SESSION_TTY)
continue;
if (s->tty_validity == TTY_FROM_UTMP && !streq_ptr(s->tty, t)) {
/* This may happen on multiplexed SSH connection (i.e. 'SSH connection sharing'). In
* this case PAM and utmp sessions don't match. In such a case let's invalidate the TTY