diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-01-19 17:33:31 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-01-21 14:22:39 +0000 |
commit | e529c4bcdbe51502662666c6cf8acae3e2446873 (patch) | |
tree | 09210cb76d4b769b9cc94b6c338cbc6f084339ea /test/test-utils.c | |
parent | c894f62f2c33cd984805ec069ad3ca8684cbafe1 (diff) | |
download | dbus-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.c | 4 |
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, |