--- mbcoding.c 2005/09/13 12:12:15 1.52 +++ mbcoding.c 2007/06/27 18:57:42 1.52.2.1 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: mbcoding.c,v 1.52 2005/09/13 12:12:15 suxen_drol Exp $ + * $Id: mbcoding.c,v 1.52.2.1 2007/06/27 18:57:42 Isibaar Exp $ * ****************************************************************************/ @@ -1067,19 +1067,12 @@ do { level = get_coeff(bs, &run, &last, 1, 0); - if (run == -1) { - DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run"); + coeff += run; + if ((run|coeff)&~63) { + DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index"); break; } - coeff += run; -#ifdef _DEBUG - if(coeff>=64) { - DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n"); - return; - } -#endif - block[scan[coeff]] = level; DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i\n", scan[coeff], level); @@ -1115,18 +1108,11 @@ p = 0; do { level = get_coeff(bs, &run, &last, 0, 0); - if (run == -1) { - DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run"); - break; - } p += run; - -#ifdef _DEBUG - if(p>=64) { - DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n"); - return; + if ((run|p)&~63) { + DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index"); + break; } -#endif if (level < 0) { level = level*quant_m_2 - quant_add; @@ -1157,18 +1143,11 @@ p = 0; do { level = get_coeff(bs, &run, &last, 0, 0); - if (run == -1) { - DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run"); - break; - } p += run; - -#ifdef _DEBUG - if(p>=64) { - DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n"); - return; + if ((run|p)&~63) { + DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index"); + break; } -#endif if (level < 0) { level = ((2 * -level + 1) * matrix[scan[p]] * quant) >> 4;