[FFmpeg-devel] [PATCH] avcodec/get_bits: don't shift more bits than available in an unsigned with get_leb()
James Almer
jamrial at gmail.com
Wed Jan 31 00:34:56 EET 2024
On 1/30/2024 7:19 PM, Andreas Rheinhardt wrote:
> James Almer:
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>> libavcodec/get_bits.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h
>> index 9e19d2a439..c0cc7c0a7d 100644
>> --- a/libavcodec/get_bits.h
>> +++ b/libavcodec/get_bits.h
>> @@ -725,7 +725,7 @@ static inline unsigned get_leb(GetBitContext *s) {
>> int byte = get_bits(s, 8);
>> unsigned bits = byte & 0x7f;
>> more = byte & 0x80;
>> - if (i <= 4)
>> + if (i <= 3 || (i == 4 && bits < (1 << 4)))
>> leb |= bits << (i * 7);
>> if (++i == 8)
>> break;
>
> This truncates more bits than necessary, which is IMO against the
> documentation of this function.
Mmh, true. I'll just leave it as is then. So patch withdrawn.
More information about the ffmpeg-devel
mailing list