[FFmpeg-devel] [PATCH 3/3] avcodec/mpeg4videodec: Replace always true check by assert
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Mon May 16 12:50:07 EEST 2022
James Almer:
>
>
> On 5/15/2022 10:16 PM, Michael Niedermayer wrote:
>> Maybe helps coverity
>> Helps: CID1433771
>>
>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>> ---
>> libavcodec/mpeg4videodec.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
>> index e2bde73639..715cb606c9 100644
>> --- a/libavcodec/mpeg4videodec.c
>> +++ b/libavcodec/mpeg4videodec.c
>> @@ -1981,7 +1981,8 @@ static int
>> mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n
>> return AVERROR_INVALIDDATA;
>> j = scantable[idx++];
>> block[j] = get_xbits(&s->gb, additional_code_len);
>> - } else if (group == 21) {
>> + } else {
>> + av_assert2(group == 21);
>
> Group is used as index to access two arrays with 22 elements each at the
> beginning of the while loop here. Maybe just also check for group > 21
> and abort like we're doing for < 0, since it's clearly not a valid or
> expected value.
>
Looking at ff_mpeg4_studio_intra shows that this is not a possible
value, so it should be an assert, not an ordinary check. So I'd move the
av_assert2 to before group is used in conjunction with ac_state_tab.
>> /* Escape */
>> if (idx > 63)
>> return AVERROR_INVALIDDATA;
More information about the ffmpeg-devel
mailing list