1. 12 Jun, 2018 1 commit
    • Jason Pleau's avatar
      daemon/gdm-session-record.c: open/close the utmp database · 086d68f2
      Jason Pleau authored
      pututxline() was used without first opening the utxmp database and
      without closing it, preventing the logout entry from being fully
      This caused the number of logged-in users to increment after each login,
      as logging out did not correctly remove the user login record from utmp.
      This commit wraps pututxline() between setutxent() and endutxent(),
      making sure that the login/logout operation are fully flushed.
      Fixes #381
  2. 16 May, 2018 2 commits
  3. 07 May, 2018 3 commits
  4. 24 Apr, 2018 1 commit
  5. 10 Apr, 2018 1 commit
    • Yifan J's avatar
      daemon/gdm-manager.c: quit plymouth when xdmcp is the only allowed connection. · ef9977bf
      Yifan J authored
      gdm is responsible to kill plymouth by spawning the "plymouth quit"
      subprocesses in gdm-manager.c. The current code pathes of quiting
      plymouth can never be reached when xdmcp is the only connection
      allowed. Consequently in the case of
          !show_local_greeter && xdmcp_enabled
      the plymouth-quit-wait.service will never quit and the login prompt
      will not popup without manual interference. This issue could be
      more obviously observed when a downstream like openSUSE which
      allows a customized sysconfig to switch the corresponding two
      options on a headless server (s390), where the setup is usually:
      The proposed patch handles this edge case by quit plymouth immediately
      when the condition is detected.
  6. 19 Feb, 2018 1 commit
  7. 12 Feb, 2018 1 commit
  8. 09 Jan, 2018 1 commit
  9. 03 Dec, 2017 2 commits
  10. 31 Oct, 2017 3 commits
  11. 24 Oct, 2017 1 commit
  12. 20 Oct, 2017 4 commits
    • Ray Strode's avatar
      daemon: add ChoiceList PAM extension · d39ed7b7
      Ray Strode authored
      This commit adds one PAM extension, a "Choice List" using the
      new PAM_BINARY_PROMPT protocol added in the previous commit.  The
      PAM module sends a list of (key, row text) pairs, and GDM ferries
      the request to gnome-shell using a new user verifier sub-interface.
      gnome-shell should present the list to the user and pass back the
      corresponding key, which GDM ferries back to the PAM module.
      Note this commit is only the daemon side. A subsequent commit will
      add the libgdm API needed for gnome-shell to actually deal with
      this new PAM extension.
    • Ray Strode's avatar
      daemon: introduce pam extension mechanism · d5280a38
      Ray Strode authored
      This abuses PAM_BINARY_PROMPT for our own nefarious purposes.
      The way it works is GDM advertises what "extensions" it supports
      with the environment variable, GDM_SUPPORTED_PAM_EXTENSIONS (a space
      separated list of reverse dns notation names). PAM services that
      support this protocol, will read the environment variable, and
      check for extension strings they support. They then know that sending
      PAM_BINARY_PROMPT won't blow up, and know what format to use for the
      binary data.  The type field of the structure is the index of the
      string from the environment variable.
      This commit is just foundation work. It doesn't actually add any
    • Ray Strode's avatar
      session: add new Initialize method · 5683e5d5
      Ray Strode authored
      Right now the worker interface has three methods for starting
      a conversation: Setup, SetupForUser, SetupForProgram
      Each of these method calls take a large number of overlapping arguments.
      Extending these argument lists is painful and breaks upgrades.
      This commit adds a new, fourth call, Initialize, which supercedes the
      others and just takes a vardict, which is much more extensible.
    • Ray Strode's avatar
      session-worker: rename response_text to response · 932dd92b
      Ray Strode authored
      Right now we always give text responses back to pam modules,
      so the response variable is named response_text.  That's going
      to change in the future, when we introduce private protocol for
      the module to talk to GDM.
      As prep work for that change, rename "response_text" to "response".
  13. 13 Oct, 2017 1 commit
  14. 10 Oct, 2017 2 commits
  15. 03 Oct, 2017 2 commits
  16. 28 Sep, 2017 5 commits
  17. 21 Sep, 2017 2 commits
  18. 20 Sep, 2017 2 commits
  19. 19 Sep, 2017 1 commit
  20. 18 Sep, 2017 2 commits
  21. 12 Sep, 2017 2 commits
    • Iain Lane's avatar
      gdm-session: Calculate fallback session name without ".desktop" · 9606bf42
      Iain Lane authored
      When the user has not ever selected a session from the selector, we will
      log them into the `fallback' session, which is calculated by looking at
      all installed sessions and picking the first one in the list.
      There is a bug that the visually selected session presented in the
      greeter can be different from the fallback session calculated inside
      GDM. This happens because the two sort sessions differently.
      Inside GDM we calculate the fallback session by comparing the full
      basename of the file:
      >>> GLib.strcmp0("gnome-xorg.desktop", "gnome.desktop")
      Whereas gnome-shell calls gdm_get_session_ids(), which returns IDs
      without the ".desktop" extension. Those are then sorted:
      >>> GLib.strcmp0("gnome-xorg", "gnome")
      which gives a different ordering.
      Fix this bug by calculating the fallback session in the same way, by
      removing ".desktop" from the filename.
    • Ray Strode's avatar
      manager: don't allow autologin from transient displays · 798be427
      Ray Strode authored
      In theory, we're only only supposed to allow autologin
      the first time a session is run, but we only count a
      session run, once it's finished.  This means that if a
      user creates a transient session to user switch, before
      they've logged out the first time at boot up, that
      transient session will begin autologin as well (which
      actually gets treated as an auto unlock).
      This commit makes sure autologin is only ever run on
      the initial display.