Hi, On Thu, Mar 29, 2012 at 8:23 PM, Ronald S. Bultje <[email protected]> wrote: > On Thu, Mar 29, 2012 at 12:00 PM, Ronald S. Bultje <[email protected]> wrote: >> Prevents subsequent overreads when these numbers are used as indices >> in arrays. > [..] >> -static int qdm2_get_vlc (GetBitContext *gb, VLC *vlc, int flag, int depth) >> +static int qdm2_get_vlc (GetBitContext *gb, VLC *vlc, int flag, int depth, >> int range) >> { >> int value; >> >> value = get_vlc2(gb, vlc->table, vlc->bits, depth); >> >> /* stage-2, 3 bits exponent escape sequence */ >> - if (value-- == 0) >> + if (value-- == 0) { >> value = get_bits (gb, get_bits (gb, 3) + 1); >> + if (range) >> + value = av_clip(value, 0, range - 1); >> + } > > I would actually like comments from Benjamin (and others) on this. > See, the issue is that we clip the value to be back in the valid > range, but still, it means we lost "sync" on the bitstream regardless, > and thus won't be able to produce anything but noise from now on. > Should we instead just abort decoding this frame and resume on the > next one?
Forgot to finish this - the advantage of the current approach is simplicity/speed. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
