Message ID | 1475227747-11938-1-git-send-email-cus@passwd.hu |
---|---|
State | Accepted |
Commit | 2face3e7b568daf70f3115126b81d5793301569c |
Headers | show |
On Fri, 30 Sep 2016 11:29:05 +0200 Marton Balint <cus@passwd.hu> wrote: > Signed-off-by: Marton Balint <cus@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.
On Fri, Sep 30, 2016 at 11:40 AM, wm4 <nfxjfg@googlemail.com> wrote: > On Fri, 30 Sep 2016 11:29:05 +0200 > Marton Balint <cus@passwd.hu> wrote: > >> Signed-off-by: Marton Balint <cus@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
On Fri, 30 Sep 2016, Hendrik Leppkes wrote: > On Fri, Sep 30, 2016 at 11:40 AM, wm4 <nfxjfg@googlemail.com> wrote: >> On Fri, 30 Sep 2016 11:29:05 +0200 >> Marton Balint <cus@passwd.hu> wrote: >> >>> Signed-off-by: Marton Balint <cus@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. > Thanks, pushed. Regards, Marton
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;
Signed-off-by: Marton Balint <cus@passwd.hu> --- libavcodec/utils.c | 3 +++ 1 file changed, 3 insertions(+)