diff --git a/libavcodec/proresdec.c b/libavcodec/proresdec.c index 00eb38d1c6..fc7a55bfc8 100644 --- a/libavcodec/proresdec.c +++ b/libavcodec/proresdec.c @@ -480,6 +480,7 @@ static int decode_slice_thread(AVCodecContext *avctx, void *arg, int jobnr, int y_data_size = AV_RB16(buf + 2); u_data_size = AV_RB16(buf + 4); v_data_size = slice->data_size - y_data_size - u_data_size - hdr_size; + if (hdr_size > 7) v_data_size = AV_RB16(buf + 6); if (y_data_size < 0 || u_data_size < 0 || v_data_size < 0) { av_log(avctx, AV_LOG_ERROR, "invalid plane data size\n");