aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-09-16 20:58:38 +0300
committerLuca Barbato <lu_zero@gentoo.org>2013-10-04 04:45:34 +0200
commit99f953b3fe4bc43783208186a64fc38ca71ca2ea (patch)
tree588334eaac6cbb388fa6311a1bd03d6e67225e63
parent9b9aee27f4e43b4a6b0884f8a6f49eb0289d7c09 (diff)
downloadffmpeg-99f953b3fe4bc43783208186a64fc38ca71ca2ea.tar.gz
rmdec: Validate the fps value
Abort if it is invalid if strict error checking has been requested. Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org Signed-off-by: Martin Storsjö <martin@martin.st> (cherry picked from commit 0f310a6f333b016d336674d086045e8473fdf918) Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Conflicts: libavformat/rmdec.c
-rw-r--r--libavformat/rmdec.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index 6495bdf17a..f8362c0192 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -331,8 +331,13 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
if ((ret = rm_read_extradata(pb, st->codec, codec_data_size - (avio_tell(pb) - codec_pos))) < 0)
return ret;
- av_reduce(&st->avg_frame_rate.den, &st->avg_frame_rate.num,
- 0x10000, fps, (1 << 30) - 1);
+ if (fps > 0) {
+ av_reduce(&st->avg_frame_rate.den, &st->avg_frame_rate.num,
+ 0x10000, fps, (1 << 30) - 1);
+ } else if (s->error_recognition & AV_EF_EXPLODE) {
+ av_log(s, AV_LOG_ERROR, "Invalid framerate\n");
+ return AVERROR_INVALIDDATA;
+ }
#if FF_API_R_FRAME_RATE
st->r_frame_rate = st->avg_frame_rate;
#endif