| @@ -385,8 +385,11 @@ static int aic_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, | |||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| } | } | ||||
| if ((ret = aic_decode_header(ctx, buf, buf_size)) < 0) | |||||
| ret = aic_decode_header(ctx, buf, buf_size); | |||||
| if (ret < 0) { | |||||
| av_log(avctx, AV_LOG_ERROR, "Invalid header\n"); | |||||
| return ret; | return ret; | ||||
| } | |||||
| if ((ret = ff_get_buffer(avctx, ctx->frame, 0)) < 0) | if ((ret = ff_get_buffer(avctx, ctx->frame, 0)) < 0) | ||||
| return ret; | return ret; | ||||
| @@ -398,13 +401,17 @@ static int aic_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, | |||||
| for (x = 0; x < ctx->mb_width; x += ctx->slice_width) { | for (x = 0; x < ctx->mb_width; x += ctx->slice_width) { | ||||
| slice_size = bytestream2_get_le16(&gb) * 4; | slice_size = bytestream2_get_le16(&gb) * 4; | ||||
| if (slice_size + off > buf_size || !slice_size) { | if (slice_size + off > buf_size || !slice_size) { | ||||
| av_log(avctx, AV_LOG_ERROR, "Incorrect slice size\n"); | |||||
| av_log(avctx, AV_LOG_ERROR, | |||||
| "Incorrect slice size %d at %d.%d\n", slice_size, x, y); | |||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| } | } | ||||
| if ((ret = aic_decode_slice(ctx, x, y, | |||||
| buf + off, slice_size)) < 0) | |||||
| ret = aic_decode_slice(ctx, x, y, buf + off, slice_size); | |||||
| if (ret < 0) { | |||||
| av_log(avctx, AV_LOG_ERROR, | |||||
| "Error decoding slice at %d.%d\n", x, y); | |||||
| return ret; | return ret; | ||||
| } | |||||
| off += slice_size; | off += slice_size; | ||||
| } | } | ||||