Commit 92c2a577 authored by Iain Lane's avatar Iain Lane Committed by Ray Strode

GdmManager: Don't perform timed login if session gets started

At the moment it's possible for the login screen to initiate
a timed login operation shortly after a user successfully starts
their session.

GDM won't complete the timed login operation, since a session is
already running, but will erroneously overwrite the username
associated with the session, misattributing the users session
to the timed login user.

Later, attempts to log in as the timed user will instead unlock the
session for the other user, since that session is now associated
with the timed login user.

This commit refuses timed login requests on sessions that are
already running, so the username doesn't get corrupted.

CVE-2019-3825

Closes #460
parent efb0361b
Pipeline #57237 passed with stage
in 4 minutes and 34 seconds
......@@ -2079,6 +2079,14 @@ on_session_client_connected (GdmSession *session,
g_debug ("GdmManager: client with pid %d connected", (int) pid_of_client);
if (gdm_session_is_running (session)) {
const char *session_username;
session_username = gdm_session_get_username (session);
g_debug ("GdmManager: ignoring connection, since session already running (for user %s)",
session_username);
return;
}
display = get_display_for_user_session (session);
if (display == NULL) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment