summaryrefslogtreecommitdiffstats
path: root/src/modules/dbus/iface-module.c
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2009-08-26 14:17:35 +0300
committerTanu Kaskinen <tanuk@iki.fi>2009-08-26 14:17:35 +0300
commitedf80104e32830a3d4ec58f88f9a092c32203d8a (patch)
treeea4cc1d58151f83c6708ebb4123004c22c64f295 /src/modules/dbus/iface-module.c
parent3e0e685a8c6372fb67efad5ffa54583dc757203e (diff)
dbus: Make sure that subscription callbacks don't try to access removed objects.
Diffstat (limited to 'src/modules/dbus/iface-module.c')
-rw-r--r--src/modules/dbus/iface-module.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/modules/dbus/iface-module.c b/src/modules/dbus/iface-module.c
index e3882fc9..e8aea50f 100644
--- a/src/modules/dbus/iface-module.c
+++ b/src/modules/dbus/iface-module.c
@@ -274,6 +274,11 @@ static void subscription_cb(pa_core *core, pa_subscription_event_type_t t, uint3
pa_assert((t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) == PA_SUBSCRIPTION_EVENT_MODULE);
pa_assert(m);
+ /* We can't use idx != m->module->index, because the m->module pointer may
+ * be stale at this point. */
+ if (pa_idxset_get_by_index(core->modules, idx) != m->module)
+ return;
+
if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) != PA_SUBSCRIPTION_EVENT_CHANGE)
return;