From 4987faee78b9869f8f4646b8dd971d459df218a5 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 4 Mar 2013 11:21:08 +0100 Subject: [PATCH] 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 --- libavcodec/h264.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index e7186c847a..0b22613bdf 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -2745,6 +2745,12 @@ static int h264_set_parameter_from_sps(H264Context *h) if (h->avctx->has_b_frames < 2) h->avctx->has_b_frames = !h->low_delay; + if (h->sps.bit_depth_luma != h->sps.bit_depth_chroma) { + av_log_missing_feature(h->avctx, + "Different bit depth between chroma and luma", 1); + return AVERROR_PATCHWELCOME; + } + if (h->avctx->bits_per_raw_sample != h->sps.bit_depth_luma || h->cur_chroma_format_idc != h->sps.chroma_format_idc) { if (h->avctx->codec &&