diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2013-03-04 11:21:08 +0100 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2013-03-09 18:01:09 +0100 |
commit | 146eac0a0c5f56dd016f281a0a01214cb51dd870 (patch) | |
tree | 60f96bca2738294c1dd3c4681d327703d90852be | |
parent | 4852b3aabd4bd763152f8aa2849f117264532b19 (diff) | |
download | ffmpeg-146eac0a0c5f56dd016f281a0a01214cb51dd870.tar.gz |
h264: check for luma and chroma bit dept being equal
The decoder assumes a single bit depth for all the planes
while the specification allows different bit depths for luma
and chroma.
Avoid the possible problems described in CVE-2013-2277
CC: libav-stable@libav.org
(cherry picked from commit 4987faee78b9869f8f4646b8dd971d459df218a5)
Conflicts:
libavcodec/h264.c
-rw-r--r-- | libavcodec/h264.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 54f618653d..8625b0f392 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2421,6 +2421,12 @@ static int h264_set_parameter_from_sps(H264Context *h) if (s->avctx->has_b_frames < 2) s->avctx->has_b_frames = !s->low_delay; + if (h->sps.bit_depth_luma != h->sps.bit_depth_chroma) { + av_log_missing_feature(s->avctx, + "Different bit depth between chroma and luma", 1); + return AVERROR_PATCHWELCOME; + } + if (s->avctx->bits_per_raw_sample != h->sps.bit_depth_luma || h->cur_chroma_format_idc != h->sps.chroma_format_idc) { if (s->avctx->codec && |