diff options
author | Matthew Waters <matthew@centricular.com> | 2020-12-02 15:43:15 +1100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2021-02-17 12:06:29 +0000 |
commit | aacec2cf3c58f5ee416be6a2e93e922b2baea898 (patch) | |
tree | edea88ead3cab26cfb40bf932fc9471ec5fe9f15 | |
parent | 3d7ace81517e0de8180daeefc5a848c26f11d8d9 (diff) | |
download | gst-libav-aacec2cf3c58f5ee416be6a2e93e922b2baea898.tar.gz |
avviddec: take the maximum of the height/coded_height
Otherwise, some h.264 streams (particularly with cropping information)
may cause memory corruption after a renegotiation to a smaller size when
decoded and then ffmpeg writes past the end of the buffer.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/80
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/118>
-rw-r--r-- | ext/libav/gstavviddec.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index e7b85ff..72077ed 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -665,7 +665,7 @@ gst_ffmpegvideodec_prepare_dr_pool (GstFFMpegVidDec * ffmpegdec, gsize max_align; width = GST_VIDEO_INFO_WIDTH (info); - height = GST_VIDEO_INFO_HEIGHT (info); + height = MAX (GST_VIDEO_INFO_HEIGHT (info), ffmpegdec->context->coded_height); /* let ffmpeg find the alignment and padding */ avcodec_align_dimensions2 (ffmpegdec->context, &width, &height, |