Quoting Ramiro Polla (2024-10-22 11:25:58)
> On Mon, Oct 21, 2024 at 1:41 AM Michael Niedermayer
> <mich...@niedermayer.cc> wrote:
> > On Thu, Oct 17, 2024 at 01:00:12PM +0200, Ramiro Polla wrote:
> > > Consider APPx fields that are too short to contain an id field (32-bit)
> > > as stubs, and silently ignore them.
> > >
> > > This has been seen in the MJPEG output from some webcams (such as the
> > > Logitech C270 and C920) and the JPEG images embedded in DNG images
> > > from the Pentax K-1 camera.
> > > ---
> > >  libavcodec/mjpegdec.c | 20 +++++++++++---------
> > >  1 file changed, 11 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
> > > index a775fdca30..3cd9904595 100644
> > > --- a/libavcodec/mjpegdec.c
> > > +++ b/libavcodec/mjpegdec.c
> > > @@ -1856,20 +1856,22 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
> > >      int len, id, i;
> > >
> > >      len = get_bits(&s->gb, 16);
> > > -    if (len < 6) {
> > > -        if (s->bayer) {
> > > -            // Pentax K-1 (digital camera) JPEG images embedded in DNG 
> > > images contain unknown APP0 markers
> > > -            av_log(s->avctx, AV_LOG_WARNING, "skipping APPx 
> > > (len=%"PRId32") for bayer-encoded image\n", len);
> > > -            skip_bits(&s->gb, len);
> > > -            return 0;
> > > -        } else
> > > -            return AVERROR_INVALIDDATA;
> > > +    if (len < 2)
> > > +        return AVERROR_INVALIDDATA;
> > > +    len -= 2;
> > > +
> > > +    if (len < 4) {
> > > +        /* Silently ignore APPx stubs */
> > > +        if (show_bits(&s->gb, 8 * len) == 0)
> > > +            goto out;
> > > +        return AVERROR_INVALIDDATA;
> >
> > this silently errors on the ones it doesnt ignore, it was more informative
> > before
> 
> It still prints the error message after returning AVERROR_INVALIDDATA
> from mjpeg_decode_app():
> [mjpeg @ 0x7fc4a0002dc0] unable to decode APP fields: Invalid data
> found when processing input
> 
> I could also add another verbose log before "goto out" to
> not-so-silently ignore the APPx stubs if you want.

The best approach IMO is to check for AV_EF_EXPLODE and error out if
it's set.

-- 
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to