aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-10-09 21:58:13 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-09 21:58:13 +0200
commit397d194e50e15bf20dc5950e2afe9f868c4ff2c9 (patch)
tree89e05294007a3e68e4b7e47ec8906e397bfe671a
parente1b2f6ec119dc43a66ff731b98c768778497ff95 (diff)
downloadffmpeg-397d194e50e15bf20dc5950e2afe9f868c4ff2c9.tar.gz
prores: check slice mb_y against mb_height
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/proresdec_gpl.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libavcodec/proresdec_gpl.c b/libavcodec/proresdec_gpl.c
index a375f9c957..a97b4f7f36 100644
--- a/libavcodec/proresdec_gpl.c
+++ b/libavcodec/proresdec_gpl.c
@@ -223,7 +223,10 @@ static int decode_picture_header(AVCodecContext *avctx, const uint8_t *buf, cons
}
ctx->mb_width = (avctx->width + 15) >> 4;
- ctx->mb_height = (avctx->height + 15) >> 4;
+ if (ctx->frame_type)
+ ctx->mb_height = (avctx->height + 31) >> 5;
+ else
+ ctx->mb_height = (avctx->height + 15) >> 4;
slice_count = AV_RB16(buf + 5);
@@ -282,6 +285,12 @@ static int decode_picture_header(AVCodecContext *avctx, const uint8_t *buf, cons
}
}
+ if (mb_x || mb_y != ctx->mb_height) {
+ av_log(avctx, AV_LOG_ERROR, "error wrong mb count y %d h %d\n",
+ mb_y, ctx->mb_height);
+ return -1;
+ }
+
return pic_data_size;
}