summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2016-08-12 11:29:01 +1200
committerRobert Ancell <robert.ancell@canonical.com>2016-08-12 11:29:01 +1200
commit9dc6b33677f0195dd117e8faef88967a7c4b0afe (patch)
treecebbc70a1adbcea6160f931f6d4f116d2cf5e321
parent5ffa492673e13db51bd7989b662b54e394910ec3 (diff)
downloadlightdm-git-9dc6b33677f0195dd117e8faef88967a7c4b0afe.tar.gz
Fix reference count when creating sessions from greeters
-rw-r--r--src/seat.c2
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/scripts/session-greeter-unlock-twice.conf54
-rwxr-xr-xtests/test-session-greeter-unlock-twice2
4 files changed, 59 insertions, 1 deletions
diff --git a/src/seat.c b/src/seat.c
index e8d4cd00..2fc5a89f 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -1877,7 +1877,7 @@ seat_real_create_greeter_session (Seat *seat)
static Session *
create_session_cb (Greeter *greeter, Seat *seat)
{
- return create_session (seat, FALSE);
+ return g_object_ref (create_session (seat, FALSE));
}
static Greeter *
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d5092d80..584810e5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -170,6 +170,7 @@ TESTS = \
test-session-greeter-autologin \
test-session-greeter-reconnect \
test-session-greeter-unlock \
+ test-session-greeter-unlock-twice \
test-vnc-login \
test-vnc-command \
test-vnc-dimensions \
@@ -551,6 +552,7 @@ EXTRA_DIST = \
scripts/session-greeter-autologin.conf \
scripts/session-greeter-reconnect.conf \
scripts/session-greeter-unlock.conf \
+ scripts/session-greeter-unlock-twice.conf \
scripts/session-stdout.conf \
scripts/session-stderr.conf \
scripts/session-stderr-multi-write.conf \
diff --git a/tests/scripts/session-greeter-unlock-twice.conf b/tests/scripts/session-greeter-unlock-twice.conf
new file mode 100644
index 00000000..fc6d053f
--- /dev/null
+++ b/tests/scripts/session-greeter-unlock-twice.conf
@@ -0,0 +1,54 @@
+#
+# Check can unlock user with an in-session greeter and re-lock again
+#
+
+[Seat:*]
+autologin-user=have-password1
+user-session=greeter
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Log into our account
+#?*SESSION-X-0 GREETER-AUTHENTICATE USERNAME=have-password1
+#?SESSION-X-0 GREETER-SHOW-PROMPT TEXT="Password:"
+#?*SESSION-X-0 GREETER-RESPOND TEXT="password"
+#?SESSION-X-0 GREETER-AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*SESSION-X-0 GREETER-START-SESSION
+
+# We are reactivated
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Authenticate again
+#?*SESSION-X-0 GREETER-AUTHENTICATE USERNAME=have-password1
+#?SESSION-X-0 GREETER-SHOW-PROMPT TEXT="Password:"
+#?*SESSION-X-0 GREETER-RESPOND TEXT="password"
+#?SESSION-X-0 GREETER-AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*SESSION-X-0 GREETER-START-SESSION
+
+# We are reactivated
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/test-session-greeter-unlock-twice b/tests/test-session-greeter-unlock-twice
new file mode 100755
index 00000000..3554d0a7
--- /dev/null
+++ b/tests/test-session-greeter-unlock-twice
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-unlock-twice test-gobject-greeter