| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Right nowe don't uninitialize pam or switch back to the
starting VT if the worker is killed before the session.
This commit fixes that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment the session worker exits as soon as it gets SIGTERM.
That means it may fail to stop the user session (which only happens
in the orderly shutdown path).
This commit sets up a SIGTERM handler that integrates with and
quits the main loop after the session is started.
It still retains the _exit-on-SIGTERM behavior before the session
is started, to ensure a stuck pam module doesn't prevent the
process from dying.
Some small changes to commit by Ray Strode.
Closes #400
|
|
|
|
|
|
|
|
| |
We're going to need to access the worker state as a property on
the worker object.
This commit hooks it up to glib-mkenums so the requisite goo can
get generated
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
Allow sessions to register with GDM
Closes #483
See merge request GNOME/gdm!67
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Recording when sessions start, for Wayland → Xorg fallback or
transitioning to the user session, is currently done with timeouts.
This isn't ideal, because on some very slow machines the timeout can be
hit before the session has had a chance to fail: if gnome-session takes
more than 3 seconds to fail then the session will be considered to have
exited rather than failed, and so we don't do Xorg fallback.
We can do this more reliably if we allow sessions to optionally register
themselves with GDM. Then we will know when they've started, so can shut
down the greeter or fall back to Xorg as appropriate. The mechanism is
that they specify X-GDM-SessionRegisters=true in their file, and then
call RegsterSession on the DisplayManager interface on the bus (added in
the previous commit) to say that they've started up.
If X-GDM-SessionRegisters is missing or false, GDM will call the same
method for them after 10 seconds.
Closes: #483
|
| |
| |
| |
| |
| | |
Window managers can use this to register with GDM when they've finished
starting up and started displaying.
|
|/
|
|
| |
This makes the code a fair bit simpler.
|
| |
|
|\
| |
| |
| |
| | |
libgdm: Always de-duplicate
See merge request GNOME/gdm!66
|
|/
|
|
|
| |
I put this inside an `#ifdef ENABLE_WAYLAND_SUPPORT` before, which would
mean that it's not called if that's not defined.
|
|\
| |
| |
| |
| |
| |
| | |
libgdm: Remove duplicate sessions once, after all sessions have been processed
Closes #473
See merge request GNOME/gdm!65
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We add sessions to a hash table keyed on the basename without extension,
and while we're adding them we de-duplicate based on the translated name
(the text that will be visible in the switcher).
This has a problem. In this situation:
```
laney@disco:~$ tree /usr/share/{wayland-,x}sessions/
/usr/share/wayland-sessions/
├── gnome.desktop
└── ubuntu-wayland.desktop
/usr/share/xsessions/
├── gnome.desktop -> gnome-xorg.desktop
├── gnome-xorg.desktop
└── ubuntu.desktop
```
We process the X sessions first, and then the Wayland sessions. The
deduplication might end up removing `xsessions/gnome-xorg` and leaving
`xsessions/gnome`. Then when we come to process the Wayland sessions, we
will clobber `xsessions/gnome` with `wayland-sessions/gnome`, as they
have the same ID.
When everything is working, it is actually *intentional* that
`xsessions/gnome` gets clobbered, so that you end up seeing "GNOME"
(wayland) and "GNOME on Xorg" in the switcher, and not (e.g.) "GNOME on
Xorg" twice, and you have the correct fallback behaviour in case you ever
enable/disable Wayland.
Instead of filtering while we add things, we can add all the sessions we
find (clobbering duplicate IDs as before), and then process the list
once at the end, removing sessions with duplicated visible names at that
point.
Closes: #473
|
|\
| |
| |
| |
| |
| |
| | |
Remove erroneous NULL from session search directories
Closes #470
See merge request GNOME/gdm!62
|
|/
|
|
| |
Fixes issue #470.
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| | |
build: Don't dist generated files
See merge request GNOME/gdm!61
|
|/
|
|
|
|
| |
Various generated files are ending up being disted, which is wrong
becuase they leak the maintainer's prefix into the tarball and are
generated anyway during build.
|
| |
|
|\
| |
| |
| |
| | |
correct gdm_display_store_foreach
See merge request GNOME/gdm!60
|
| |
| |
| |
| |
| |
| |
| |
| | |
The manager code is returning FALSE from its
listify_display_ids foreach function, which is useless
since commit 47d01abe.
This commit makes it return void instead.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The local display factor code is returning FALSE from its
display store foreach functions, which is useless since commit
47d01abe.
This commit makes it return void instead.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The xdmcp code is returning TRUE from its display store foreach
functions, which is useless since commit 47d01abe and wrong
before that.
This commit makes it return void instead.
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
gdm_display_store_foreach is designed to iterate through all
displays in the display store. Under the hood, it currently
uses gdm_display_store_find, though, so will prematurely stop
it's loop if a callback returns TRUE. Callers are getting this
wrong. Some return TRUE with the expectation it goes on, and
some fail to return a value at all.
This commit changes gdm_display_store_foreach to use
g_hash_table_foreach instead, so the callback return values no
longer matter.
|
| |
|
|
|
|
| |
(cherry picked from commit 57bf0dd774c6c904291c03e761316b18577b5c3d)
|
|
|
|
|
|
| |
kill-session-processes=1 is long gone
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
address timedlogin bug leading to wrong session getting unlocked
Closes #460
See merge request GNOME/gdm!58
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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 https://gitlab.gnome.org/GNOME/gdm/issues/460
|
| |
| |
| |
| |
| |
| |
| | |
If a client has a reference to a session that starts running,
refuse to allow further operations on the session.
CVE-2019-3825
|
| |
| |
| |
| |
| |
| |
| |
| | |
There's a bug right now dealing with timed login and reauthentication,
but it's not clear what's going on by looking at the logs.
This commit sprinkles some more logging throughout the code, to make
the bug easier to track.
|
|/
|
|
|
|
|
|
|
| |
At the moment GDM is misidentifying timed login sessions as if
they are automatic login sessions. That leads to their displays
getting killed sometimes shortly after log in.
This commit corrects the check, so that timed login sessions aren't
treated as autologin sessions.
|
|\
| |
| |
| |
| |
| |
| | |
Accept all keyboard layouts by default to prevent confusing behaviour
Closes #433
See merge request GNOME/gdm!57
|
|/ |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| | |
Use G_PARAM_STATIC_STRINGS on properties
See merge request GNOME/gdm!56
|
|/
|
|
| |
This prevents strings from being unnecessarily copied.
|
|
|
|
|
|
|
|
|
|
|
| |
Right now if two session files have the same translated name, the login
screen will show both of them. There's no way the user can know which
session does which, so that's not a great user experience. Furthermore,
in the face of symlinks, both sessions truely could be identical.
This commit filters out the duplicates, so only one shows in the list.
Closes https://gitlab.gnome.org/GNOME/gdm/issues/437
|
| |
|
|\
| |
| |
| |
| | |
Get rid of most `g_type_class_add_private` occurrences (and use G_DECLARE_..._TYPE)
See merge request GNOME/gdm!55
|
| | |
|
| | |
|
| | |
|