1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

aacdec_usac: error out on too many elements

USAC supports up to 64 audio channels, but puts no limit on the total
number of extensions that may be present. Which may mean that there's
a single audio channel, with 65 thousand extension elements.

We assume that 64 elements is the maximum for now. So check the value.
This commit is contained in:
Lynne 2024-06-02 23:45:31 +02:00
parent b70fdbde9c
commit 39826eacff
No known key found for this signature in database
GPG Key ID: A2FEA5F03F034464

View File

@ -393,6 +393,11 @@ int ff_aac_usac_config_decode(AACDecContext *ac, AVCodecContext *avctx,
/* UsacDecoderConfig */
elem_id[0] = elem_id[1] = elem_id[2] = 0;
usac->nb_elems = get_escaped_value(gb, 4, 8, 16) + 1;
if (usac->nb_elems > 64) {
av_log(ac->avctx, AV_LOG_ERROR, "Too many elements: %i\n",
usac->nb_elems);
return AVERROR(EINVAL);
}
for (int i = 0; i < usac->nb_elems; i++) {
AACUsacElemConfig *e = &usac->elems[i];