summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2020-12-02 15:43:15 +1100
committerTim-Philipp Müller <tim@centricular.com>2021-02-17 12:06:29 +0000
commitaacec2cf3c58f5ee416be6a2e93e922b2baea898 (patch)
treeedea88ead3cab26cfb40bf932fc9471ec5fe9f15
parent3d7ace81517e0de8180daeefc5a848c26f11d8d9 (diff)
downloadgst-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.c2
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,