diff options
-rw-r--r-- | src/xdmcp-server.c | 5 | ||||
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/scripts/xdmcp-server-request-without-addresses.conf | 33 | ||||
-rwxr-xr-x | tests/test-xdmcp-server-request-without-addresses | 2 |
4 files changed, 41 insertions, 1 deletions
diff --git a/src/xdmcp-server.c b/src/xdmcp-server.c index 24381bdb..489e6bb3 100644 --- a/src/xdmcp-server.c +++ b/src/xdmcp-server.c @@ -363,6 +363,9 @@ choose_connection (XDMCPPacket *packet, GInetAddress *source_address) gssize index = -1; addresses_length = packet->Request.n_connections; + if (addresses_length == 0) + return NULL; + addresses = malloc (sizeof (GInetAddress *) * addresses_length); for (i = 0; i < addresses_length; i++) addresses[i] = connection_to_address (&packet->Request.connections[i]); @@ -377,7 +380,7 @@ choose_connection (XDMCPPacket *packet, GInetAddress *source_address) index = find_address (addresses, addresses_length, g_inet_address_get_family (source_address)); /* Otherwise use the first available */ - if (index < 0 && addresses_length > 0) + if (index < 0) index = 0; for (i = 0; i < addresses_length; i++) diff --git a/tests/Makefile.am b/tests/Makefile.am index 6262a78e..ebb88b60 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -179,6 +179,7 @@ TESTS = \ test-xdmcp-server-login \ test-xdmcp-server-double-login \ test-xdmcp-server-guest \ + test-xdmcp-server-request-without-addresses \ test-utmp-login \ test-utmp-autologin \ test-utmp-wrong-password \ @@ -599,6 +600,7 @@ EXTRA_DIST = \ scripts/xdmcp-server-guest.conf \ scripts/xdmcp-server-login.conf \ scripts/xdmcp-server-open-file-descriptors.conf \ + scripts/xdmcp-server-request-without-addresses.conf \ scripts/xremote-autologin.conf \ scripts/xremote-login.conf \ scripts/xserver-config.conf \ diff --git a/tests/scripts/xdmcp-server-request-without-addresses.conf b/tests/scripts/xdmcp-server-request-without-addresses.conf new file mode 100644 index 00000000..4a42606f --- /dev/null +++ b/tests/scripts/xdmcp-server-request-without-addresses.conf @@ -0,0 +1,33 @@ +# +# Check remote X server sending a request without connections is ignored +# + +[LightDM] +start-default-seat=false + +[XDMCPServer] +enabled=true + +[test-xserver-config] +xdcmp-empty-request=true + +#?*START-DAEMON +#?RUNNER DAEMON-START +#?*WAIT + +# Start a remote X server to log in with XDMCP +#?*START-XSERVER ARGS=":98 -query 127.0.0.1 -nolisten unix" +#?XSERVER-98 START LISTEN-TCP NO-LISTEN-UNIX + +# Start sending XDMCP queries +#?*XSERVER-98 START-XDMCP +#?XSERVER-98 SEND-QUERY + +# Negotiate with daemon +#?XSERVER-98 GOT-WILLING AUTHENTICATION-NAME="" HOSTNAME="" STATUS="" +#?*XSERVER-98 SEND-REQUEST ADDRESSES="" AUTHORIZATION-NAMES="MIT-MAGIC-COOKIE-1" MFID="TEST XSERVER" +#?XSERVER-98 GOT-DECLINE STATUS="No valid address found" AUTHENTICATION-NAME="" + +# Clean up +#?*STOP-DAEMON +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/test-xdmcp-server-request-without-addresses b/tests/test-xdmcp-server-request-without-addresses new file mode 100755 index 00000000..ccdcad17 --- /dev/null +++ b/tests/test-xdmcp-server-request-without-addresses @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xdmcp-server-request-without-addresses test-gobject-greeter |