diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2013-03-04 11:21:08 +0100 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2013-03-05 22:18:02 +0100 |
commit | 4987faee78b9869f8f4646b8dd971d459df218a5 (patch) | |
tree | d3e6c02218c60a7b908301e81f16d745fdcb79ab /libavcodec | |
parent | c57a593670308447aa1998259a1912273cc67fe9 (diff) | |
download | ffmpeg-4987faee78b9869f8f4646b8dd971d459df218a5.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
Diffstat (limited to 'libavcodec')
-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 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 && |