X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fjpeg2000dec.c;h=849b0f72625f122be30e7b1ae64ea5ad4b05df29;hb=1fec347ef56bc3f501ffdfe0d253e768666aac7f;hp=8cdc729e0ca5eb671ed0e83c924ce00bfe1bb92b;hpb=3e0daf0716888d166329cffa554893846d6ec3be;p=ffmpeg diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c index 8cdc729e0ca..849b0f72625 100644 --- a/libavcodec/jpeg2000dec.c +++ b/libavcodec/jpeg2000dec.c @@ -39,6 +39,7 @@ #include "thread.h" #include "jpeg2000.h" #include "jpeg2000dsp.h" +#include "profiles.h" #define JP2_SIG_TYPE 0x6A502020 #define JP2_SIG_VALUE 0x0D0A870A @@ -1493,6 +1494,10 @@ static int decode_cblk(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *codsty, ff_mqc_initdec(&t1->mqc, cblk->data, 0, 1); while (passno--) { + if (bpno < 0) { + av_log(s->avctx, AV_LOG_ERROR, "bpno became negative\n"); + return AVERROR_INVALIDDATA; + } switch(pass_t) { case 0: decode_sigpass(t1, width, height, bpno + 1, bandpos, @@ -2138,15 +2143,6 @@ static const AVOption options[] = { { NULL }, }; -static const AVProfile profiles[] = { - { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0, "JPEG 2000 codestream restriction 0" }, - { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1, "JPEG 2000 codestream restriction 1" }, - { FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION, "JPEG 2000 no codestream restrictions" }, - { FF_PROFILE_JPEG2000_DCINEMA_2K, "JPEG 2000 digital cinema 2K" }, - { FF_PROFILE_JPEG2000_DCINEMA_4K, "JPEG 2000 digital cinema 4K" }, - { FF_PROFILE_UNKNOWN }, -}; - static const AVClass jpeg2000_class = { .class_name = "jpeg2000", .item_name = av_default_item_name, @@ -2166,5 +2162,5 @@ AVCodec ff_jpeg2000_decoder = { .decode = jpeg2000_decode_frame, .priv_class = &jpeg2000_class, .max_lowres = 5, - .profiles = NULL_IF_CONFIG_SMALL(profiles) + .profiles = NULL_IF_CONFIG_SMALL(ff_jpeg2000_profiles) };