summaryrefslogtreecommitdiff
path: root/libavcodec/dxtory.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2018-01-22 14:02:59 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2018-01-23 21:48:31 +0100
commit6e1a167c5564085385488b4f579e9efb987d4bfa (patch)
tree324dda2389c56983d9094665867d6c1deb6dd4da /libavcodec/dxtory.c
parent94d4237a7a294ce80e1e577b38e9c93e8882aff9 (diff)
downloadffmpeg-6e1a167c5564085385488b4f579e9efb987d4bfa.tar.gz
avcodec/dxtory: Fix bits left checks
Fixes: Timeout Fixes: 4863/clusterfuzz-testcase-6347354178322432 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/dxtory.c')
-rw-r--r--libavcodec/dxtory.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/dxtory.c b/libavcodec/dxtory.c
index 6f8652ad49..e736cec8db 100644
--- a/libavcodec/dxtory.c
+++ b/libavcodec/dxtory.c
@@ -326,7 +326,7 @@ static int dx2_decode_slice_5x5(GetBitContext *gb, AVFrame *frame,
int stride = frame->linesize[0];
uint8_t *dst = frame->data[0] + stride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
b = decode_sym_565(gb, lru[0], 5);
g = decode_sym_565(gb, lru[1], is_565 ? 6 : 5);
@@ -392,7 +392,7 @@ static int dx2_decode_slice_rgb(GetBitContext *gb, AVFrame *frame,
int stride = frame->linesize[0];
uint8_t *dst = frame->data[0] + stride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
dst[x * 3 + 0] = decode_sym(gb, lru[0]);
dst[x * 3 + 1] = decode_sym(gb, lru[1]);
@@ -437,7 +437,7 @@ static int dx2_decode_slice_410(GetBitContext *gb, AVFrame *frame,
uint8_t *U = frame->data[1] + (ustride >> 2) * line;
uint8_t *V = frame->data[2] + (vstride >> 2) * line;
- for (y = 0; y < left - 3 && get_bits_left(gb) > 16; y += 4) {
+ for (y = 0; y < left - 3 && get_bits_left(gb) > 9 * width; y += 4) {
for (x = 0; x < width; x += 4) {
for (j = 0; j < 4; j++)
for (i = 0; i < 4; i++)
@@ -481,7 +481,7 @@ static int dx2_decode_slice_420(GetBitContext *gb, AVFrame *frame,
uint8_t *V = frame->data[2] + (vstride >> 1) * line;
- for (y = 0; y < left - 1 && get_bits_left(gb) > 16; y += 2) {
+ for (y = 0; y < left - 1 && get_bits_left(gb) > 6 * width; y += 2) {
for (x = 0; x < width; x += 2) {
Y[x + 0 + 0 * ystride] = decode_sym(gb, lru[0]);
Y[x + 1 + 0 * ystride] = decode_sym(gb, lru[0]);
@@ -524,7 +524,7 @@ static int dx2_decode_slice_444(GetBitContext *gb, AVFrame *frame,
uint8_t *U = frame->data[1] + ustride * line;
uint8_t *V = frame->data[2] + vstride * line;
- for (y = 0; y < left && get_bits_left(gb) > 16; y++) {
+ for (y = 0; y < left && get_bits_left(gb) > 6 * width; y++) {
for (x = 0; x < width; x++) {
Y[x] = decode_sym(gb, lru[0]);
U[x] = decode_sym(gb, lru[1]) ^ 0x80;