mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2026-01-02 11:08:39 -05:00
protocol-native: don't leak a proplist
This commit is contained in:
parent
0684b236f0
commit
88fc458393
1 changed files with 18 additions and 8 deletions
|
|
@ -2560,7 +2560,10 @@ static void command_create_upload_stream(pa_pdispatch *pd, uint32_t command, uin
|
||||||
if (!(name = pa_proplist_gets(p, PA_PROP_EVENT_ID)))
|
if (!(name = pa_proplist_gets(p, PA_PROP_EVENT_ID)))
|
||||||
name = pa_proplist_gets(p, PA_PROP_MEDIA_NAME);
|
name = pa_proplist_gets(p, PA_PROP_MEDIA_NAME);
|
||||||
|
|
||||||
CHECK_VALIDITY(c->pstream, name && pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID);
|
if (!name || !pa_namereg_is_valid_name(name)) {
|
||||||
|
pa_proplist_free(p);
|
||||||
|
CHECK_VALIDITY(c->pstream, FALSE, tag, PA_ERR_INVALID);
|
||||||
|
}
|
||||||
|
|
||||||
s = upload_stream_new(c, &ss, &map, name, length, p);
|
s = upload_stream_new(c, &ss, &map, name, length, p);
|
||||||
pa_proplist_free(p);
|
pa_proplist_free(p);
|
||||||
|
|
@ -3590,24 +3593,30 @@ static void command_update_proplist(pa_pdispatch *pd, uint32_t command, uint32_t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CHECK_VALIDITY(c->pstream, mode == PA_UPDATE_SET || mode == PA_UPDATE_MERGE || mode == PA_UPDATE_REPLACE, tag, PA_ERR_INVALID);
|
if (!(mode == PA_UPDATE_SET || mode == PA_UPDATE_MERGE || mode == PA_UPDATE_REPLACE)) {
|
||||||
|
pa_proplist_free(p);
|
||||||
|
CHECK_VALIDITY(c->pstream, FALSE, tag, PA_ERR_INVALID);
|
||||||
|
}
|
||||||
|
|
||||||
if (command == PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST) {
|
if (command == PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST) {
|
||||||
playback_stream *s;
|
playback_stream *s;
|
||||||
|
|
||||||
s = pa_idxset_get_by_index(c->output_streams, idx);
|
s = pa_idxset_get_by_index(c->output_streams, idx);
|
||||||
CHECK_VALIDITY(c->pstream, s, tag, PA_ERR_NOENTITY);
|
if (!s || !playback_stream_isinstance(s)) {
|
||||||
CHECK_VALIDITY(c->pstream, playback_stream_isinstance(s), tag, PA_ERR_NOENTITY);
|
pa_proplist_free(p);
|
||||||
|
CHECK_VALIDITY(c->pstream, FALSE, tag, PA_ERR_NOENTITY);
|
||||||
|
}
|
||||||
pa_sink_input_update_proplist(s->sink_input, mode, p);
|
pa_sink_input_update_proplist(s->sink_input, mode, p);
|
||||||
|
|
||||||
} else if (command == PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST) {
|
} else if (command == PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST) {
|
||||||
record_stream *s;
|
record_stream *s;
|
||||||
|
|
||||||
s = pa_idxset_get_by_index(c->record_streams, idx);
|
if (!(s = pa_idxset_get_by_index(c->record_streams, idx))) {
|
||||||
CHECK_VALIDITY(c->pstream, s, tag, PA_ERR_NOENTITY);
|
pa_proplist_free(p);
|
||||||
|
CHECK_VALIDITY(c->pstream, FALSE, tag, PA_ERR_NOENTITY);
|
||||||
|
}
|
||||||
pa_source_output_update_proplist(s->source_output, mode, p);
|
pa_source_output_update_proplist(s->source_output, mode, p);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
pa_assert(command == PA_COMMAND_UPDATE_CLIENT_PROPLIST);
|
pa_assert(command == PA_COMMAND_UPDATE_CLIENT_PROPLIST);
|
||||||
|
|
||||||
|
|
@ -3615,6 +3624,7 @@ static void command_update_proplist(pa_pdispatch *pd, uint32_t command, uint32_t
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_pstream_send_simple_ack(c->pstream, tag);
|
pa_pstream_send_simple_ack(c->pstream, tag);
|
||||||
|
pa_proplist_free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void command_remove_proplist(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
|
static void command_remove_proplist(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue