aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-02-04 06:41:15 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-02-04 06:41:15 +0100
commit08dde7567dea076363e3b9f3d02a738390a698fa (patch)
tree6eedffaa36f01c678c8e667cf5f81551b9ab364e
parentcb8180885f225df6ee6f03ac157aa7617a06ff50 (diff)
parent27f60e2b0b419066619c738b3c9b9376a83ed4b1 (diff)
downloadffmpeg-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.c4
-rw-r--r--libavcodec/vc1.c4
-rw-r--r--libavformat/oggparseogm.c5
-rw-r--r--libavutil/mathematics.c3
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;