diff options
author | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-26 14:17:35 +0300 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-26 14:17:35 +0300 |
commit | edf80104e32830a3d4ec58f88f9a092c32203d8a (patch) | |
tree | ea4cc1d58151f83c6708ebb4123004c22c64f295 /src/modules/dbus/iface-sample.c | |
parent | 3e0e685a8c6372fb67efad5ffa54583dc757203e (diff) |
dbus: Make sure that subscription callbacks don't try to access removed objects.
Diffstat (limited to 'src/modules/dbus/iface-sample.c')
-rw-r--r-- | src/modules/dbus/iface-sample.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/modules/dbus/iface-sample.c b/src/modules/dbus/iface-sample.c index 4cffd59c..7147be14 100644 --- a/src/modules/dbus/iface-sample.c +++ b/src/modules/dbus/iface-sample.c @@ -463,7 +463,9 @@ static void subscription_cb(pa_core *c, pa_subscription_event_type_t t, uint32_t pa_assert(c); pa_assert(s); - if (idx != s->sample->index) + /* We can't use idx != s->sample->index, because the s->sample pointer may + * be stale at this point. */ + if (pa_idxset_get_by_index(c->scache, idx) != s->sample) return; if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) != PA_SUBSCRIPTION_EVENT_CHANGE) |