Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: gdm3-3.18.2/daemon/gdm-session-worker.c
- ===================================================================
- --- gdm3-3.18.2.orig/daemon/gdm-session-worker.c
- +++ gdm3-3.18.2/daemon/gdm-session-worker.c
- @@ -1058,6 +1059,40 @@ gdm_session_worker_initialize_pam (GdmSe
- }
- static gboolean
- +set_pam_login_vt (GdmSessionWorker *worker)
- +{
- + int fd;
- + char tty_string[256];
- + struct vt_stat vt_state = { 0 };
- +
- +
- + fd = open ("/dev/tty0", O_RDWR | O_NOCTTY);
- +
- + if (fd < 0) {
- + g_debug ("GdmSessionWorker: couldn't open VT master: %m");
- + return FALSE;
- + }
- +
- + if (ioctl (fd, VT_GETSTATE, &vt_state) < 0) {
- + g_debug ("GdmSessionWorker: couldn't get current VT: %m");
- + goto fail;
- + }
- +
- + worker->priv->login_vt = vt_state.v_active;
- +
- + close (fd);
- +
- + g_snprintf (tty_string, 256, "/dev/tty%d", worker->priv->login_vt);
- + pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string);
- +
- + return TRUE;
- +
- +fail:
- + close (fd);
- + return FALSE;
- +}
- +
- +static gboolean
- gdm_session_worker_authenticate_user (GdmSessionWorker *worker,
- gboolean password_is_required,
- GError **error)
- @@ -1067,12 +1102,15 @@ gdm_session_worker_authenticate_user (Gd
- g_debug ("GdmSessionWorker: authenticating user %s", worker->priv->username);
- +
- authentication_flags = 0;
- if (password_is_required) {
- authentication_flags |= PAM_DISALLOW_NULL_AUTHTOK;
- }
- + set_pam_login_vt (worker);
- +
- /* blocking call, does the actual conversation */
- error_code = pam_authenticate (worker->priv->pam_handle, authentication_flags);
- @@ -2021,7 +2059,6 @@ set_up_for_new_vt (GdmSessionWorker *wor
- {
- int fd;
- char vt_string[256], tty_string[256];
- - struct vt_stat vt_state = { 0 };
- int session_vt = 0;
- fd = open ("/dev/tty0", O_RDWR | O_NOCTTY);
- @@ -2031,11 +2068,6 @@ set_up_for_new_vt (GdmSessionWorker *wor
- return FALSE;
- }
- - if (ioctl (fd, VT_GETSTATE, &vt_state) < 0) {
- - g_debug ("GdmSessionWorker: couldn't get current VT: %m");
- - goto fail;
- - }
- -
- if (worker->priv->display_is_initial) {
- session_vt = atoi (GDM_INITIAL_VT);
- } else {
- @@ -2045,7 +2077,6 @@ set_up_for_new_vt (GdmSessionWorker *wor
- }
- }
- - worker->priv->login_vt = vt_state.v_active;
- worker->priv->session_vt = session_vt;
- close (fd);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement