summaryrefslogtreecommitdiff
path: root/libavcodec/xl.c
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2013-07-27 20:34:07 +0200
committerLuca Barbato <lu_zero@gentoo.org>2013-07-28 12:45:05 +0200
commitf1cb490d6d7391ff7e28cc376908cc98a652228d (patch)
tree2647c44ace260a9b913751044d7a05c80489398d /libavcodec/xl.c
parente13a929314e4a9a09d3146648f876f162f46cc32 (diff)
downloadffmpeg-f1cb490d6d7391ff7e28cc376908cc98a652228d.tar.gz
xl: Fix the buffer size check
Also make it the first check. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
Diffstat (limited to 'libavcodec/xl.c')
-rw-r--r--libavcodec/xl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/xl.c b/libavcodec/xl.c
index 530a1bd2c2..03df7c3eab 100644
--- a/libavcodec/xl.c
+++ b/libavcodec/xl.c
@@ -49,6 +49,11 @@ static int decode_frame(AVCodecContext *avctx,
uint32_t val;
int y0, y1, y2, y3 = 0, c0 = 0, c1 = 0;
+ if (buf_size < avctx->width * avctx->height * sizeof(int32_t)) {
+ av_log(avctx, AV_LOG_ERROR, "Packet is too small\n");
+ return AVERROR_INVALIDDATA;
+ }
+
if ((ret = ff_get_buffer(avctx, p, 0)) < 0) {
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
return ret;
@@ -62,11 +67,6 @@ static int decode_frame(AVCodecContext *avctx,
stride = avctx->width - 4;
- if (buf_size < avctx->width * avctx->height) {
- av_log(avctx, AV_LOG_ERROR, "Packet is too small\n");
- return AVERROR_INVALIDDATA;
- }
-
for (i = 0; i < avctx->height; i++) {
/* lines are stored in reversed order */
buf += stride;