diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-02-04 06:41:15 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-02-04 06:41:15 +0100 |
commit | 08dde7567dea076363e3b9f3d02a738390a698fa (patch) | |
tree | 6eedffaa36f01c678c8e667cf5f81551b9ab364e | |
parent | cb8180885f225df6ee6f03ac157aa7617a06ff50 (diff) | |
parent | 27f60e2b0b419066619c738b3c9b9376a83ed4b1 (diff) | |
download | ffmpeg-08dde7567dea076363e3b9f3d02a738390a698fa.tar.gz |
Merge remote-tracking branch 'qatar/release/9' into release/1.1
* qatar/release/9:
Update Changelog for 9.11
oggparseogm: check timing variables
mathematics: remove asserts from av_rescale_rnd()
vc1: Always reset numref when parsing a new frame header.
h264: reset num_reorder_frames if it is invalid
Conflicts:
Changelog
libavcodec/vc1.c
libavutil/mathematics.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/h264_ps.c | 4 | ||||
-rw-r--r-- | libavcodec/vc1.c | 4 | ||||
-rw-r--r-- | libavformat/oggparseogm.c | 5 | ||||
-rw-r--r-- | libavutil/mathematics.c | 3 |
4 files changed, 12 insertions, 4 deletions
diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index f8439b110c..b96a8be982 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -267,7 +267,9 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){ } if(sps->num_reorder_frames > 16U /*max_dec_frame_buffering || max_dec_frame_buffering > 16*/){ - av_log(h->s.avctx, AV_LOG_ERROR, "illegal num_reorder_frames %d\n", sps->num_reorder_frames); + av_log(h->s.avctx, AV_LOG_ERROR, "Clipping illegal num_reorder_frames %d\n", + sps->num_reorder_frames); + sps->num_reorder_frames = 16; return -1; } } diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 0d4077ba96..2ecef4277c 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -838,7 +838,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) int scale, shift, i; /* for initializing LUT for intensity compensation */ int field_mode, fcm; - v->numref=0; + v->numref = 0; v->p_frame_skipped = 0; if (v->second_field) { if(v->fcm!=2 || v->field_mode!=1) @@ -1013,8 +1013,6 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) v->reffield = get_bits1(gb); v->ref_field_type[0] = v->reffield ^ !v->cur_field_type; } - } else { - v->numref = 0; } if (v->extended_mv) v->mvrange = get_unary(gb, 0, 3); diff --git a/libavformat/oggparseogm.c b/libavformat/oggparseogm.c index a9091e43a1..01e6c7345e 100644 --- a/libavformat/oggparseogm.c +++ b/libavformat/oggparseogm.c @@ -79,6 +79,11 @@ ogm_header(AVFormatContext *s, int idx) size = FFMIN(size, os->psize); time_unit = bytestream2_get_le64(&p); spu = bytestream2_get_le64(&p); + if (!time_unit || !spu) { + av_log(s, AV_LOG_ERROR, "Invalid timing values.\n"); + return AVERROR_INVALIDDATA; + } + bytestream2_skip(&p, 4); /* default_len */ bytestream2_skip(&p, 8); /* buffersize + bits_per_sample */ diff --git a/libavutil/mathematics.c b/libavutil/mathematics.c index f9cf87da80..2e0cf0cbd4 100644 --- a/libavutil/mathematics.c +++ b/libavutil/mathematics.c @@ -63,6 +63,9 @@ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd){ av_assert2(b >=0); av_assert2((unsigned)(rnd&~AV_ROUND_PASS_MINMAX)<=5 && (rnd&~AV_ROUND_PASS_MINMAX)!=4); + if (c <= 0 || b < 0 || !((unsigned)(rnd&~AV_ROUND_PASS_MINMAX)<=5 && (rnd&~AV_ROUND_PASS_MINMAX)!=4)) + return INT64_MIN; + if (rnd & AV_ROUND_PASS_MINMAX) { if (a == INT64_MIN || a == INT64_MAX) return a; |