From ec4fa4c668a61de8ed7c9452e73919ba0bb1a870 Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Wed, 8 Jun 2011 20:18:12 +0100 Subject: esound,streams: Fix some crashes. After the rework to the add pa_sink_input_new_data_set_sink() (and the source equiv) calling with a NULL sink object will hit an assert. This caused crashes with the esd protocol and there was the potential (albeit unlikely) for a crash when creating a sink input without any sinks available (module-always-sink mitigates this risk but it's still a potential crasher). --- src/pulsecore/source-output.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/pulsecore/source-output.c') diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index e6cec605..59b6c2ff 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -253,8 +253,11 @@ int pa_source_output_new( pa_return_val_if_fail(!data->driver || pa_utf8_valid(data->driver), -PA_ERR_INVALID); - if (!data->source) - pa_source_output_new_data_set_source(data, pa_namereg_get(core, NULL, PA_NAMEREG_SOURCE), FALSE); + if (!data->source) { + pa_source *source = pa_namereg_get(core, NULL, PA_NAMEREG_SOURCE); + pa_return_val_if_fail(source, -PA_ERR_NOENTITY); + pa_source_output_new_data_set_source(data, source, FALSE); + } /* Routing's done, we have a source. Now let's fix the format and set up the * sample spec */ @@ -278,7 +281,6 @@ int pa_source_output_new( pa_source_output_new_data_set_sample_spec(data, &ss); } - pa_return_val_if_fail(data->source, -PA_ERR_NOENTITY); pa_return_val_if_fail(PA_SOURCE_IS_LINKED(pa_source_get_state(data->source)), -PA_ERR_BADSTATE); pa_return_val_if_fail(!data->direct_on_input || data->direct_on_input->sink == data->source->monitor_of, -PA_ERR_INVALID); -- cgit