diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2014-12-04 21:50:40 +0100 |
---|---|---|
committer | Alessandro Ghedini <alessandro@ghedini.me> | 2014-12-07 23:55:28 +0100 |
commit | 575edecccb9d04b82e19c174fee309ef0acc3064 (patch) | |
tree | 4c1a27c820f2800b13e12169362e7701a464dfcc | |
parent | 14adda8f6bbe304f454676496a23bd6515872481 (diff) | |
download | mpv-575edecccb9d04b82e19c174fee309ef0acc3064.tar.bz2 mpv-575edecccb9d04b82e19c174fee309ef0acc3064.tar.xz |
coreaudio: reject descriptions with too many channels
This is a fix attempt for #1279 and #1249.
-rw-r--r-- | audio/out/ao_coreaudio.c | 7 |
1 files changed, 7 insertions, 0 deletions
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); |