From f748e3b5a219061db021d8b6b7ebb097c65f23c5 Mon Sep 17 00:00:00 2001 From: Andreas Cadhalpun Date: Sun, 23 Oct 2016 17:08:51 +0200 Subject: nuv: validate sample_rate A negative sample rate doesn't make sense and triggers assertions in av_rescale_rnd. Signed-off-by: Andreas Cadhalpun --- libavformat/nuv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'libavformat/nuv.c') diff --git a/libavformat/nuv.c b/libavformat/nuv.c index d92025003b..9bdea4ab55 100644 --- a/libavformat/nuv.c +++ b/libavformat/nuv.c @@ -66,7 +66,7 @@ static int nuv_probe(AVProbeData *p) * @param myth set if this is a MythTVVideo format file * @return 0 or AVERROR code */ -static int get_codec_data(AVIOContext *pb, AVStream *vst, +static int get_codec_data(AVFormatContext *s, AVIOContext *pb, AVStream *vst, AVStream *ast, int myth) { nuv_frametype frametype; @@ -114,6 +114,10 @@ static int get_codec_data(AVIOContext *pb, AVStream *vst, ast->codecpar->codec_tag = avio_rl32(pb); ast->codecpar->sample_rate = avio_rl32(pb); + if (ast->codecpar->sample_rate <= 0) { + av_log(s, AV_LOG_ERROR, "Invalid sample rate %d\n", ast->codecpar->sample_rate); + return AVERROR_INVALIDDATA; + } ast->codecpar->bits_per_coded_sample = avio_rl32(pb); ast->codecpar->channels = avio_rl32(pb); ast->codecpar->channel_layout = 0; @@ -232,7 +236,7 @@ static int nuv_header(AVFormatContext *s) } else ctx->a_id = -1; - if ((ret = get_codec_data(pb, vst, ast, is_mythtv)) < 0) + if ((ret = get_codec_data(s, pb, vst, ast, is_mythtv)) < 0) return ret; ctx->rtjpg_video = vst && vst->codecpar->codec_id == AV_CODEC_ID_NUV; -- cgit v1.2.3