On 2012-02-14 15:22:27 +0100, Kostya Shishkov wrote:
> On Tue, Feb 14, 2012 at 03:07:07PM +0100, Janne Grunau wrote:
> > Prevents crashes with the fuzzed samples from bug 88 and 125 after
> > "golomb: avoid infinite loop on all-zero input".
> > ---
> >  libavcodec/rv34.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c
> > index 3e55bd1..e62f30c 100644
> > --- a/libavcodec/rv34.c
> > +++ b/libavcodec/rv34.c
> > @@ -396,8 +396,8 @@ static int rv34_decode_inter_mb_header(RV34DecContext 
> > *r, int8_t *intra_types)
> >      int i, t;
> >
> >      r->block_type = r->decode_mb_info(r);
> > -    if(r->block_type == -1)
> > -        return -1;
> > +    if (r->block_type < 0 || r->block_type >= RV34_MB_TYPES)
> > +        return AVERROR_INVALIDDATA;
> >      s->current_picture_ptr->f.mb_type[mb_pos] = 
> > rv34_mb_type_to_lavc[r->block_type];
> >      r->mb_type[mb_pos] = r->block_type;
> >      if(r->block_type == RV34_MB_SKIP){
> > --
>
> IIRC decode_mb_info() functions in both codecs check for decoded macroblock
> type being invalid so the problem should be traced deeper.

indeed, I looked for some reason only at rv40 and was puzzled how this
could happen. rv30_decode_mb_info() doesn't rejects negative values.

Janne

---8<---
Prevents crashes with the fuzzed samples from bug 88 and 125 after
"golomb: avoid infinite loop on all-zero input".
---
 libavcodec/rv30.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libavcodec/rv30.c b/libavcodec/rv30.c
index 4828e98..9d8d220 100644
--- a/libavcodec/rv30.c
+++ b/libavcodec/rv30.c
@@ -103,7 +103,7 @@ static int rv30_decode_mb_info(RV34DecContext *r)
     GetBitContext *gb = &s->gb;
     int code = svq3_get_ue_golomb(gb);
 
-    if(code > 11){
+    if (code > 11 || code < 0){
         av_log(s->avctx, AV_LOG_ERROR, "Incorrect MB type code\n");
         return -1;
     }
-- 
1.7.8.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to