1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-09 08:27:18 +00:00

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.
This commit is contained in:
wm4 2015-10-26 15:51:59 +01:00
parent 81109dcbb6
commit 72d3c5ef00

View File

@ -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);