[FFmpeg-devel] [PATCH 2/2] avcodec/mjpegdec: silently ignore APPx stubs

Ramiro Polla ramiro.polla at gmail.com
Tue Oct 22 12:25:58 EEST 2024


On Mon, Oct 21, 2024 at 1:41 AM Michael Niedermayer
<michael at 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.


More information about the ffmpeg-devel mailing list