diff options
author | Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> | 2016-10-23 17:08:51 +0200 |
---|---|---|
committer | Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> | 2016-11-07 00:51:49 +0100 |
commit | f748e3b5a219061db021d8b6b7ebb097c65f23c5 (patch) | |
tree | 7297b12ea425ea362c16ce48689e69406dafc77f | |
parent | 2c818c3821e4e1646610112d4e01fdcc33071901 (diff) | |
download | ffmpeg-streaming-f748e3b5a219061db021d8b6b7ebb097c65f23c5.zip ffmpeg-streaming-f748e3b5a219061db021d8b6b7ebb097c65f23c5.tar.gz |
nuv: validate sample_rate
A negative sample rate doesn't make sense and triggers assertions in
av_rescale_rnd.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
-rw-r--r-- | libavformat/nuv.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavformat/nuv.c b/libavformat/nuv.c index d920250..9bdea4a 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; |