[FFmpeg-devel] [PATCH] avcodec/mobiclip: Check quantizer before table setup

Michael Niedermayer michael at niedermayer.cc
Fri Sep 11 21:09:48 EEST 2020


On Fri, Sep 11, 2020 at 11:12:33AM +0200, Paul B Mahol wrote:
> On Fri, Sep 11, 2020 at 01:19:59AM +0200, Michael Niedermayer wrote:
> > Fixes: index -1 out of bounds for type 'const uint8_t [6][16]'
> > Fixes: out of array read
> > Fixes: shift exponent -21 is negative
> > Fixes: 25422/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOBICLIP_fuzzer-5748258226569216
> > Fixes: shift exponent 8039082 is too large for 32-bit type 'int'
> > Fixes: 25430/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOBICLIP_fuzzer-5698567770210304
> > 
> > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> > Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> > ---
> >  libavcodec/mobiclip.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c
> > index d147eddbae..13f0edc89d 100644
> > --- a/libavcodec/mobiclip.c
> > +++ b/libavcodec/mobiclip.c
> > @@ -1323,6 +1323,10 @@ static int mobiclip_decode(AVCodecContext *avctx, void *data,
> >          }
> >      } else {
> >          MotionXY *motion = s->motion;
> > +        int quantizer = s->quantizer + get_se_golomb(gb);
> > +
> > +        if (quantizer < 12 || quantizer > 161)
> 
> From where this numbers come?

It comes from the implementation
qtab is int and will overflow beyond 161

and below 12 the shift will be negative here:
s->qtab[1][i] = quant8x8_tab[qx][i] << (qy - 2);


> I think this is too aggressive.


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many that live deserve death. And some that die deserve life. Can you give
it to them? Then do not be too eager to deal out death in judgement. For
even the very wise cannot see all ends. -- Gandalf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20200911/ca5e64c6/attachment.sig>


More information about the ffmpeg-devel mailing list