[FFmpeg-devel] [PATCH 1/3] lavc/utils: disallow zero sized packets with data set in avcodec_send_packet

Hendrik Leppkes h.leppkes at gmail.com
Fri Sep 30 14:04:48 EEST 2016


On Fri, Sep 30, 2016 at 11:40 AM, wm4 <nfxjfg at googlemail.com> wrote:
> On Fri, 30 Sep 2016 11:29:05 +0200
> Marton Balint <cus at passwd.hu> wrote:
>
>> Signed-off-by: Marton Balint <cus at passwd.hu>
>> ---
>>  libavcodec/utils.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
>> index cf85300..d0a6817 100644
>> --- a/libavcodec/utils.c
>> +++ b/libavcodec/utils.c
>> @@ -2813,6 +2813,9 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke
>>      if (avctx->internal->draining)
>>          return AVERROR_EOF;
>>
>> +    if (avpkt && !avpkt->size && avpkt->data)
>> +        return AVERROR(EINVAL);
>> +
>>      if (!avpkt || !avpkt->size) {
>>          avctx->internal->draining = 1;
>>          avpkt = NULL;
>
> This means packet with size==0 with data!=NULL will be rejected,
> instead of being interpreted as flush packets.
>
> Fine with me. Still allows "normal" flush packets, and probably
> prevents that API users accidentally enter the EOF state by sending such
> packets.

I agree, such a packet would likely not be meant as a flush packet,
and may induce unexpected behavior.

- Hendrik


More information about the ffmpeg-devel mailing list