From 575edecccb9d04b82e19c174fee309ef0acc3064 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 4 Dec 2014 21:50:40 +0100 Subject: coreaudio: reject descriptions with too many channels This is a fix attempt for #1279 and #1249. --- audio/out/ao_coreaudio.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/audio/out/ao_coreaudio.c b/audio/out/ao_coreaudio.c index 642a1bf683..013b47e17d 100644 --- a/audio/out/ao_coreaudio.c +++ b/audio/out/ao_coreaudio.c @@ -410,6 +410,13 @@ bool ca_layout_to_mp_chmap(struct ao *ao, AudioChannelLayout *layout, // to the waveextensible definition: this is the kind of // descriptions we process here. + if (layout->mNumberChannelDescriptions > MP_NUM_CHANNELS) { + MP_VERBOSE(ao, "layout has too many descriptions (%u, max: %d)", + (unsigned) layout->mNumberChannelDescriptions, + MP_NUM_CHANNELS); + goto coreaudio_error; + } + for (int n = 0; n < layout->mNumberChannelDescriptions; n++) { AudioChannelLabel label = layout->mChannelDescriptions[n].mChannelLabel; uint8_t speaker = ca_label_to_mp_speaker_id(label); -- cgit v1.2.3