avformat/matroskadec: check out_samplerate before using it in av_rescale()
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 18 Aug 2013 00:20:54 +0000 (02:20 +0200)
committerJames Almer <jamrial@gmail.com>
Mon, 26 Aug 2013 20:52:49 +0000 (17:52 -0300)
Prevent assertion failure with damaged input

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 338f8b2eaf36f078eb5cc26ac10e651dc4c48243)

libavformat/matroskadec.c

index de9b58f..350df45 100644 (file)
@@ -1672,6 +1672,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 ||