[FFmpeg-devel] [PATCH 1/3] avformat/aviobuf: read till the very end of the IO buffer

Marton Balint cus at passwd.hu
Sun Sep 20 13:59:50 EEST 2020



On Sun, 20 Sep 2020, Paul B Mahol wrote:

> On Sun, Sep 20, 2020 at 10:52:51AM +0200, Marton Balint wrote:
>> There was an off-by-one error when checking if the IO buffer still has enough
>> space till the end.
>
> How to reproduce such error(s)?

It is not something you will notice, only the buffer is flushed when it
does not necessarily need to be.

But I guess you can reproduce it by using an buffer size of 66852 and try
receiving an MPEGTS UDP stream. Without the patch fill_buffer always
flushes, with the patch fill_buffer only flushes in every second
call, as it needs to, because a single UDP TS packet (1316 bytes) and
the potential maximum sized UDP packet (65536 bytes) simultaneously fit in
the buffer.

Regards,
Marton


>
>> 
>> Signed-off-by: Marton Balint <cus at passwd.hu>
>> ---
>>  libavformat/aviobuf.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
>> index a77517d712..9675425349 100644
>> --- a/libavformat/aviobuf.c
>> +++ b/libavformat/aviobuf.c
>> @@ -540,7 +540,7 @@ static void fill_buffer(AVIOContext *s)
>>  {
>>      int max_buffer_size = s->max_packet_size ?
>>                            s->max_packet_size : IO_BUFFER_SIZE;
>> -    uint8_t *dst        = s->buf_end - s->buffer + max_buffer_size < s->buffer_size ?
>> +    uint8_t *dst        = s->buf_end - s->buffer + max_buffer_size <= s->buffer_size ?
>>                            s->buf_end : s->buffer;
>>      int len             = s->buffer_size - (dst - s->buffer);
>> 
>> -- 
>> 2.26.2
>> 
>> _______________________________________________
>> 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".
> _______________________________________________
> 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