aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-02-14 12:40:36 +0100
committerAnton Khirnov <anton@khirnov.net>2013-02-23 09:22:30 +0100
commitddfe1246d98f70cdce368a2176196ba26ed7bf2d (patch)
treeca45eb83c54e28a254e8d7db61538221c02075de
parent067432c1c95882c7221e694f33d9f3bdbe46de7f (diff)
downloadffmpeg-ddfe1246d98f70cdce368a2176196ba26ed7bf2d.tar.gz
flicvideo: avoid an infinite loop in byte run compression
When byte_run is 0, pixel_countdown is not touched and the loop will run forever. CC:libav-stable@libav.org
-rw-r--r--libavcodec/flicvideo.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c
index f0b5d50d02..08c3ef32a8 100644
--- a/libavcodec/flicvideo.c
+++ b/libavcodec/flicvideo.c
@@ -348,6 +348,11 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx,
pixel_countdown = s->avctx->width;
while (pixel_countdown > 0) {
byte_run = sign_extend(bytestream2_get_byte(&g2), 8);
+ if (!byte_run) {
+ av_log(avctx, AV_LOG_ERROR, "Invalid byte run value.\n");
+ return AVERROR_INVALIDDATA;
+ }
+
if (byte_run > 0) {
palette_idx1 = bytestream2_get_byte(&g2);
CHECK_PIXEL_PTR(byte_run);