From 72d3c5ef00a71f4620279e0883c86894f145939d Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 26 Oct 2015 15:51:59 +0100 Subject: ao_coreaudio: fix potential UB in error cases mNumberChannelDescriptions being 0 is pretty much an error, but if it can happen, then the code checking the chmap below will trigger UB, as chmap is not initialized at all. Also, simplify the code a little: we never change the number of channels, so this is just fine. --- audio/out/ao_coreaudio_chmap.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'audio/out/ao_coreaudio_chmap.c') diff --git a/audio/out/ao_coreaudio_chmap.c b/audio/out/ao_coreaudio_chmap.c index 52ea81d5c7..df6b188656 100644 --- a/audio/out/ao_coreaudio_chmap.c +++ b/audio/out/ao_coreaudio_chmap.c @@ -151,6 +151,7 @@ static bool ca_layout_to_mp_chmap(struct ao *ao, AudioChannelLayout *layout, return false; } + chmap->num = l->mNumberChannelDescriptions; for (int n = 0; n < l->mNumberChannelDescriptions; n++) { AudioChannelLabel label = l->mChannelDescriptions[n].mChannelLabel; int speaker = ca_label_to_mp_speaker_id(label); @@ -158,10 +159,8 @@ static bool ca_layout_to_mp_chmap(struct ao *ao, AudioChannelLayout *layout, MP_VERBOSE(ao, "channel label=%u unusable to build channel " "bitmap, skipping layout\n", (unsigned) label); goto coreaudio_error; - } else { - chmap->speaker[n] = speaker; - chmap->num = n + 1; } + chmap->speaker[n] = speaker; } talloc_free(talloc_ctx); -- cgit v1.2.3