summaryrefslogtreecommitdiff
path: root/libavcodec/jvdec.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2012-07-03 11:56:55 +0000
committerPaul B Mahol <onemda@gmail.com>2012-07-03 13:06:23 +0000
commit5d171b1f4718ae2916dfddc35299ccdef1e3001c (patch)
treecadb68feef0b2a643c3ec77d1532d1c766b8e085 /libavcodec/jvdec.c
parentf8a81755c2e604febcbf88b5f17d601f30ae0bf9 (diff)
jvdec: check if there is enough data
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavcodec/jvdec.c')
-rw-r--r--libavcodec/jvdec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/jvdec.c b/libavcodec/jvdec.c
index a8c3336ccc..f2a874409c 100644
--- a/libavcodec/jvdec.c
+++ b/libavcodec/jvdec.c
@@ -137,6 +137,9 @@ static int decode_frame(AVCodecContext *avctx,
const uint8_t *buf_end = buf + avpkt->size;
int video_size, video_type, i, j;
+ if (avpkt->size < 6)
+ return AVERROR_INVALIDDATA;
+
video_size = AV_RL32(buf);
video_type = buf[4];
buf += 5;
@@ -162,11 +165,9 @@ static int decode_frame(AVCodecContext *avctx,
buf += video_size;
} else if (video_type == 2) {
- if (buf + 1 <= buf_end) {
- int v = *buf++;
- for (j = 0; j < avctx->height; j++)
- memset(s->frame.data[0] + j*s->frame.linesize[0], v, avctx->width);
- }
+ int v = *buf++;
+ for (j = 0; j < avctx->height; j++)
+ memset(s->frame.data[0] + j*s->frame.linesize[0], v, avctx->width);
} else {
av_log(avctx, AV_LOG_WARNING, "unsupported frame type %i\n", video_type);
return AVERROR_INVALIDDATA;