X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fshortendec.c;h=f7390b2e6289d6d6e3d1de19b5ba11549f176d13;hb=b5dd964cdca090aed0fc6068c8967c92c594d9aa;hp=b02984a3f7d25f2eca9b6bcab9772d73af6df06c;hpb=67d466d09b105b2b1d3d8da4c21d8975925741ae;p=ffmpeg diff --git a/libavformat/shortendec.c b/libavformat/shortendec.c index b02984a3f7d..f7390b2e628 100644 --- a/libavformat/shortendec.c +++ b/libavformat/shortendec.c @@ -40,12 +40,18 @@ static int shn_probe(const AVProbeData *p) channels = get_ur_golomb_shorten(&gb, 0); blocksize = 256; } else { - int k; + unsigned k; k = get_ur_golomb_shorten(&gb, 2); + if (k > 31) + return 0; internal_ftype = get_ur_golomb_shorten(&gb, k); k = get_ur_golomb_shorten(&gb, 2); + if (k > 31) + return 0; channels = get_ur_golomb_shorten(&gb, k); k = get_ur_golomb_shorten(&gb, 2); + if (k > 31) + return 0; blocksize = get_ur_golomb_shorten(&gb, k); } @@ -59,6 +65,7 @@ static int shn_probe(const AVProbeData *p) return AVPROBE_SCORE_EXTENSION + 1; } +FF_RAW_DEMUXER_CLASS(shorten) AVInputFormat ff_shorten_demuxer = { .name = "shn", .long_name = NULL_IF_CONFIG_SMALL("raw Shorten"), @@ -68,4 +75,6 @@ AVInputFormat ff_shorten_demuxer = { .flags = AVFMT_NOBINSEARCH | AVFMT_NOGENSEARCH | AVFMT_NO_BYTE_SEEK | AVFMT_NOTIMESTAMPS, .extensions = "shn", .raw_codec_id = AV_CODEC_ID_SHORTEN, + .priv_data_size = sizeof(FFRawDemuxerContext), + .priv_class = &shorten_demuxer_class, };