summaryrefslogtreecommitdiff
path: root/test/test-utils.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-01-19 17:33:31 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-01-21 14:22:39 +0000
commite529c4bcdbe51502662666c6cf8acae3e2446873 (patch)
tree09210cb76d4b769b9cc94b6c338cbc6f084339ea /test/test-utils.c
parentc894f62f2c33cd984805ec069ad3ca8684cbafe1 (diff)
downloaddbus-e529c4bcdbe51502662666c6cf8acae3e2446873.tar.gz
test_server_setup: allocate two server-data blobs, for watches and timeouts
This is similar to how ConnectionData works. Without this change, we deserve to segfault: when the first set of callbacks (either watches or timeouts) is cleaned up, we unref the server and loop, and free sd; when the second set of callbacks is cleaned up, we use-after-free sd, the server and the loop, then double-free sd. However, due to fd.o #33277 we don't even get that far, because we've already died with an assertion failure. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33277
Diffstat (limited to 'test/test-utils.c')
-rw-r--r--test/test-utils.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/test/test-utils.c b/test/test-utils.c
index 67e207c5..1c78812a 100644
--- a/test/test-utils.c
+++ b/test/test-utils.c
@@ -307,6 +307,10 @@ test_server_setup (DBusLoop *loop,
goto nomem;
}
+ sd = serverdata_new (loop, server);
+ if (sd == NULL)
+ goto nomem;
+
if (!dbus_server_set_timeout_functions (server,
add_server_timeout,
remove_server_timeout,