A reader left open may lead to hangs.
Signed-off-by: Vittorio Giovara <[email protected]>
---
libavcodec/mpeg12dec.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 711b310..1e1e4a5 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -170,7 +170,8 @@ static inline int mpeg1_decode_block_intra(MpegEncContext
*s,
break;
} else if (level != 0) {
i += run;
- check_scantable_index(s, i);
+ if (i > 63)
+ break;
j = scantable[i];
level = (level * qscale * quant_matrix[j]) >> 4;
level = (level - 1) | 1;
@@ -192,7 +193,8 @@ static inline int mpeg1_decode_block_intra(MpegEncContext
*s,
LAST_SKIP_BITS(re, &s->gb, 8);
}
i += run;
- check_scantable_index(s, i);
+ if (i > 63)
+ break;
j = scantable[i];
if (level < 0) {
level = -level;
@@ -209,6 +211,9 @@ static inline int mpeg1_decode_block_intra(MpegEncContext
*s,
}
CLOSE_READER(re, &s->gb);
}
+
+ check_scantable_index(s, i);
+
s->block_last_index[n] = i;
return 0;
}
--
2.6.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel