proresdec: Fix end condition

Fixes out of array writes
No FFmpeg release is affected by this

This also fixes some artifacts

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-05-22 19:44:12 +02:00
parent df3ee7b9a9
commit 30df9789a9
3 changed files with 3 additions and 3 deletions

View File

@ -458,7 +458,7 @@ static void unpack_alpha(GetBitContext *gb, uint16_t *dst, int num_coeffs,
} else { } else {
dst[idx++] = (alpha_val << 2) | (alpha_val >> 6); dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);
} }
if (idx == num_coeffs - 1) if (idx >= num_coeffs)
break; break;
} while (get_bits_left(gb)>0 && get_bits1(gb)); } while (get_bits_left(gb)>0 && get_bits1(gb));
val = get_bits(gb, 4); val = get_bits(gb, 4);

View File

@ -496,7 +496,7 @@ static void unpack_alpha(GetBitContext *gb, uint16_t *dst, int num_coeffs,
dst[idx++] = alpha_val >> 6; dst[idx++] = alpha_val >> 6;
else else
dst[idx++] = (alpha_val << 2) | (alpha_val >> 6); dst[idx++] = (alpha_val << 2) | (alpha_val >> 6);
if (idx == num_coeffs - 1) if (idx >= num_coeffs)
break; break;
} while (get_bits1(gb)); } while (get_bits1(gb));
val = get_bits(gb, 4); val = get_bits(gb, 4);

View File

@ -1,5 +1,5 @@
#tb 0: 1/25 #tb 0: 1/25
#tb 1: 1/48000 #tb 1: 1/48000
0, 0, 0, 1, 16588800, 0x87f98f3c 0, 0, 0, 1, 16588800, 0x20778f5e
1, 0, 0, 1024, 4096, 0x00000000 1, 0, 0, 1024, 4096, 0x00000000
1, 1024, 1024, 896, 3584, 0x00000000 1, 1024, 1024, 896, 3584, 0x00000000