}
cblk->length += cblk->lengthinc;
cblk->lengthinc = 0;
+
+ if (cblk->length > sizeof(cblk->data)) {
+ av_log(s->avctx, AV_LOG_ERROR,
+ "Block length %d > data size %zd\n",
+ cblk->length, sizeof(cblk->data));
+ return AVERROR_INVALIDDATA;
+ }
}
}
return 0;
av_log(s->avctx, AV_LOG_ERROR, "Missing SOT\n");
return AVERROR_INVALIDDATA;
}
+ if (!s->tile) {
+ av_log(s->avctx, AV_LOG_ERROR, "Missing SIZ\n");
+ return AVERROR_INVALIDDATA;
+ }
tile = s->tile + s->curtileno;
tp = tile->tile_part + tile->tp_idx;
static void jpeg2000_init_static_data(AVCodec *codec)
{
ff_jpeg2000_init_tier1_luts();
+ ff_mqc_init_context_tables();
}
#define OFFSET(x) offsetof(Jpeg2000DecoderContext, x)