aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-18 02:20:54 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-18 02:34:48 +0200
commit338f8b2eaf36f078eb5cc26ac10e651dc4c48243 (patch)
tree8291f42e1d71272d6208fe1987d0b10a570fe08f
parentaf248fa1174200acb537a6ab1198bb2fed38e884 (diff)
downloadffmpeg-338f8b2eaf36f078eb5cc26ac10e651dc4c48243.tar.gz
avformat/matroskadec: check out_samplerate before using it in av_rescale()
Prevent assertion failure with damaged input Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/matroskadec.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index b78553ea08..a857630d7e 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1737,6 +1737,8 @@ static int matroska_read_header(AVFormatContext *s)
avio_wl16(&b, 1);
avio_wl16(&b, track->audio.channels);
avio_wl16(&b, track->audio.bitdepth);
+ if (track->audio.out_samplerate < 0 || track->audio.out_samplerate > INT_MAX)
+ return AVERROR_INVALIDDATA;
avio_wl32(&b, track->audio.out_samplerate);
avio_wl32(&b, av_rescale((matroska->duration * matroska->time_scale), track->audio.out_samplerate, AV_TIME_BASE * 1000));
} else if (codec_id == AV_CODEC_ID_RV10 || codec_id == AV_CODEC_ID_RV20 ||