filter-apply: Ignore monitor source of filter in find_paired_master()

When module-filter-apply tries to find a matching source-output for
a given sink-input and a stream within the same group exists on the
monitor source of the filter, module-filter apply falsely assumes
that the source belongs to another instance of the filter and tries
to access source->output_from_master->source, which leads to a
segmentation fault.

This patch fixes the issue by ignoring the stream if the source is
the monitor source of the filter.
This commit is contained in:
Georg Chini 2018-02-10 20:39:27 +01:00
parent dfb0460fb4
commit 838d95dab7

View file

@ -259,6 +259,12 @@ static bool find_paired_master(struct userdata *u, struct filter *filter, pa_obj
if (pa_streq(g, group)) { if (pa_streq(g, group)) {
if (pa_streq(module_name, so->source->module->name)) { if (pa_streq(module_name, so->source->module->name)) {
/* Make sure we are not routing to the monitor source
* of the same filter */
if (so->source->monitor_of) {
pa_xfree(g);
continue;
}
/* Make sure we're not routing to another instance of /* Make sure we're not routing to another instance of
* the same filter. */ * the same filter. */
filter->source_master = so->source->output_from_master->source; filter->source_master = so->source->output_from_master->source;