X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fshortendec.c;h=9209de4388478cc4b392d02c88082b0c18813cbd;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=42fcdf75c39bce51b6604c2f833d059e6fe49b91;hpb=5c363d3e595a9e5b7c42897b7aab91b91b154ac1;p=ffmpeg diff --git a/libavformat/shortendec.c b/libavformat/shortendec.c index 42fcdf75c39..9209de43884 100644 --- a/libavformat/shortendec.c +++ b/libavformat/shortendec.c @@ -25,7 +25,7 @@ #include "rawdec.h" #include "libavcodec/golomb.h" -static int shn_probe(AVProbeData *p) +static int shn_probe(const AVProbeData *p) { GetBitContext gb; int version, internal_ftype, channels, blocksize; @@ -40,12 +40,18 @@ static int shn_probe(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,7 +65,8 @@ static int shn_probe(AVProbeData *p) return AVPROBE_SCORE_EXTENSION + 1; } -AVInputFormat ff_shorten_demuxer = { +FF_RAW_DEMUXER_CLASS(shorten) +const AVInputFormat ff_shorten_demuxer = { .name = "shn", .long_name = NULL_IF_CONFIG_SMALL("raw Shorten"), .read_probe = shn_probe, @@ -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, };