diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-02-15 12:08:49 +1100 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-02-15 12:08:49 +1100 |
commit | 14b3b8e817da9de8e0bd69ad2ccb2b4258278e95 (patch) | |
tree | fc415fe4cf1f70a70d1b90bf9c52da2c499e8172 /tests | |
parent | 5abcd9c4939015454cfa09e24e3a3201678751a0 (diff) | |
download | lightdm-14b3b8e817da9de8e0bd69ad2ccb2b4258278e95.tar.gz |
Detect and handle correctly PAM modules that return user accounts that don't exist
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/scripts/user-renamed-invalid.conf | 34 | ||||
-rw-r--r-- | tests/src/libsystem.c | 7 | ||||
-rw-r--r-- | tests/src/test-runner.c | 3 | ||||
-rwxr-xr-x | tests/test-user-renamed-invalid | 2 |
5 files changed, 48 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 819c60d8..331868cc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -18,6 +18,7 @@ TESTS = \ test-autologin-guest-fail-setup-script \ test-autologin-guest-logout \ test-user-renamed \ + test-user-renamed-invalid \ test-keyboard-layout \ test-no-keyboard-layout \ test-default-keyboard-layout \ @@ -168,6 +169,7 @@ EXTRA_DIST = \ scripts/switch-to-user-logout.conf \ scripts/switch-to-user-no-password.conf \ scripts/user-renamed.conf \ + scripts/user-renamed-invalid.conf \ scripts/vnc-login.conf \ scripts/xdmcp-login.conf \ scripts/xserver-fail-start.conf diff --git a/tests/scripts/user-renamed-invalid.conf b/tests/scripts/user-renamed-invalid.conf new file mode 100644 index 00000000..3f386c28 --- /dev/null +++ b/tests/scripts/user-renamed-invalid.conf @@ -0,0 +1,34 @@ +# +# Check if PAM renames the user to one that doesn't exist lightdm handles this +# + +[LightDM] +minimum-display-number=50 + +[SeatDefaults] +autologin-user=rename-user-invalid + +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER :50 START +#?XSERVER :50 INDICATE-READY + +# LightDM connects to X server +#?XSERVER :50 ACCEPT-CONNECT + +# (fails to start session for invalid user) + +# Greeter starts +#?GREETER :50 START +#?XSERVER :50 ACCEPT-CONNECT +#?GREETER :50 CONNECT-XSERVER +#?GREETER :50 CONNECT-TO-DAEMON +#?GREETER :50 CONNECTED-TO-DAEMON + +# Cleanup +#?*STOP-DAEMON +# Don't know what order they will terminate +#?(GREETER :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?(GREETER :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/src/libsystem.c b/tests/src/libsystem.c index 63fb467f..31986d01 100644 --- a/tests/src/libsystem.c +++ b/tests/src/libsystem.c @@ -350,6 +350,13 @@ pam_authenticate (pam_handle_t *pamh, int flags) pamh->user = g_strdup ("user1"); } + /* Special user 'rename-user-invalid' changes to an invalid user on authentication */ + if (password_matches && strcmp (pamh->user, "rename-user-invalid") == 0) + { + g_free (pamh->user); + pamh->user = g_strdup ("invalid-user"); + } + if (password_matches) return PAM_SUCCESS; else diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index 6e088dab..2fa1db75 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -1217,8 +1217,11 @@ main (int argc, char **argv) {"bob", "", TRUE, "Bob User", NULL, "us", NULL, "en_AU.utf8", 1001}, {"carol", "", TRUE, "Carol User", "alternative", "ru", "fr\toss;ru;", "fr_FR.UTF-8", 1002}, {"dave", "", FALSE, "Dave User", NULL, NULL, NULL, NULL, 1003}, + /* user0 is switched to user1 when authentication succeeds */ {"user0", "", TRUE, "User 0", NULL, NULL, NULL, NULL, 1004}, {"user1", "", TRUE, "User 1", NULL, NULL, NULL, NULL, 1005}, + /* rename-user-invalid switches to invalid-user when authentication succeeds */ + {"rename-user-invalid", "", TRUE, "User 1", NULL, NULL, NULL, NULL, 1006}, {NULL, NULL, FALSE, NULL, NULL, NULL, NULL, NULL, 0} }; passwd_data = g_string_new (""); diff --git a/tests/test-user-renamed-invalid b/tests/test-user-renamed-invalid new file mode 100755 index 00000000..c1f816ed --- /dev/null +++ b/tests/test-user-renamed-invalid @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner user-renamed-invalid test-gobject-greeter |