[FFmpeg-devel] [PATCH] avcodec/h2645_parse: Avoid EAGAIN

James Almer jamrial at gmail.com
Sun Oct 1 22:40:33 EEST 2023


On 10/1/2023 3:24 PM, Kieran Kunhya wrote:
> Sent from my mobile device
> 
> On Sun, 1 Oct 2023, 20:01 Michael Niedermayer, <michael at niedermayer.cc>
> wrote:
> 
>> EAGAIN causes an assertion failure when it is returned from the decoder
>>
>> Fixes: Assertion consumed != (-(11)) failed at libavcodec/decode.c:462
>> Fixes: assertion_IOT_instruction_decode_c_462/poc
>>
>> Found-by: Hardik Shah of Vehere (Dawn Treaders team)
>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
>> ---
>>   libavcodec/h2645_parse.h | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/h2645_parse.h b/libavcodec/h2645_parse.h
>> index 787ce971ee4..128dea09efb 100644
>> --- a/libavcodec/h2645_parse.h
>> +++ b/libavcodec/h2645_parse.h
>> @@ -123,7 +123,7 @@ static inline int get_nalsize(int nal_length_size,
>> const uint8_t *buf,
>>
>>       if (*buf_index >= buf_size - nal_length_size) {
>>           // the end of the buffer is reached, refill it
>> -        return AVERROR(EAGAIN);
>> +        return AVERROR_INVALIDDATA;
>>       }
>>
>>       for (i = 0; i < nal_length_size; i++)
>> --
>> 2.17.1
>>
> 
> But these are not the same for an API user?

I think that when get_nalsize() was written, this specific path was 
meant to be handled by internal callers (e.g, ff_h2645_packet_split) in 
some custom way, but ultimately none did, and simply treated all return 
codes < 0 as errors, propagating them all the way to the library user.

So either code using get_nalsize() gets adapted to properly handle 
EAGAIN as "refill the buffer" (judging by the comment above), or just 
remove all pretensions of there being situations other than fatal errors 
and success, which is what Michael did.

> 
> Kieran
> 
>>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list