ffmpeg | branch: release/7.1 | James Almer <jamr...@gmail.com> | Sat May 10 12:50:37 2025 -0300| [2c4ca52c8aed6108063c733ce40043742aff5b3b] | committer: James Almer
avformat/iamf_parse: increase PutBytes buffer when writing AAC extradata We may write up to 43 bits, so 5 bytes is not enough. Fixes: Assertion n>=0 && n<=32 failed at ./libavcodec/get_bits.h:406 Fixes: 398527871/clusterfuzz-testcase-minimized-ffmpeg_dem_IAMF_fuzzer-6602025714647040 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2c4ca52c8aed6108063c733ce40043742aff5b3b --- libavformat/iamf_parse.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavformat/iamf_parse.c b/libavformat/iamf_parse.c index 7b3b1e87fa..9107f16003 100644 --- a/libavformat/iamf_parse.c +++ b/libavformat/iamf_parse.c @@ -285,10 +285,11 @@ static int update_extradata(AVCodecParameters *codecpar) AV_WL16A(codecpar->extradata + 16, AV_RB16A(codecpar->extradata + 16)); // Byte swap Output Gain break; case AV_CODEC_ID_AAC: { - uint8_t buf[5]; + uint8_t buf[6]; + int size = FFMIN(codecpar->extradata_size, sizeof(buf)); - init_put_bits(&pb, buf, sizeof(buf)); - ret = init_get_bits8(&gb, codecpar->extradata, codecpar->extradata_size); + init_put_bits(&pb, buf, size); + ret = init_get_bits8(&gb, codecpar->extradata, size); if (ret < 0) return ret; @@ -304,6 +305,10 @@ static int update_extradata(AVCodecParameters *codecpar) skip_bits(&gb, 4); put_bits(&pb, 4, codecpar->ch_layout.nb_channels); // set channel config ret = put_bits_left(&pb); + while (ret >= 32) { + put_bits32(&pb, get_bits_long(&gb, 32)); + ret -= 32; + } put_bits(&pb, ret, get_bits_long(&gb, ret)); flush_put_bits(&pb); _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".