[FFmpeg-devel] [PATCH] MJPEG check that dc_index and ac_index have a VLC table associated

Reimar Döffinger Reimar.Doeffinger
Sat Jul 4 11:14:12 CEST 2009


On Sat, Jul 04, 2009 at 11:11:22AM +0200, Reimar D?ffinger wrote:
> this fixes from issue 1240 mjpeg/smclockmjpeg.avi.1.171
> The problem is that the vlc tables 2 and 3 are only initialized if they
> are stored in the file, thus causing a NULL dereference when they are
> used otherwise.
> I think just checking for a valid VLC table is the most reliable way to
> fix this, like this:
> Index: libavcodec/mjpegdec.c
> ===================================================================
> --- libavcodec/mjpegdec.c       (revision 19334)
> +++ libavcodec/mjpegdec.c       (working copy)
> @@ -922,24 +923,8 @@
>          if (s->dc_index[i] <  0 || s->ac_index[i] < 0 ||
>              s->dc_index[i] >= 4 || s->ac_index[i] >= 4)
>              goto out_of_range;
> -#if 0 //buggy
> -        switch(s->start_code)
> -        {
> -            case SOF0:
> -                if (dc_index[i] > 1 || ac_index[i] > 1)
> -                    goto out_of_range;
> -                break;
> -            case SOF1:
> -            case SOF2:
> -                if (dc_index[i] > 3 || ac_index[i] > 3)
> -                    goto out_of_range;
> -                break;
> -            case SOF3:
> -                if (dc_index[i] > 3 || ac_index[i] != 0)
> -                    goto out_of_range;
> -                break;
> -        }
> -#endif
> +        if (!s->vlcs[0][s->dc_index[i]].table || !s->vlcs[1][s->dc_index[i]].table)

With that typo fixed (should be ac_index in the second case), it fixes
mjpeg/smclockmjpeg.avi.1.10, too.



More information about the ffmpeg-devel mailing list