From 800d9eaa42d248e8f25503253abaa70b14e5ee0e Mon Sep 17 00:00:00 2001 From: Gusar321 Date: Fri, 21 Jul 2023 14:03:20 +0200 Subject: [PATCH] vo_vaapi: fix segfault in draw_osd When video width is not a multiple of slice size, the last slice will overflow. Fix this by adjusting the width of the last slice to fit within the video. Fixes issue #10436 --- video/out/vo_vaapi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/video/out/vo_vaapi.c b/video/out/vo_vaapi.c index 009832c734..0c2d1835bf 100644 --- a/video/out/vo_vaapi.c +++ b/video/out/vo_vaapi.c @@ -684,6 +684,10 @@ static void draw_osd(struct vo *vo) int rw = mp_rect_w(*rc); int rh = mp_rect_h(*rc); + // reduce width of last slice to prevent overflow + if (n == num_mod_rc - 1) + rw = w - rc->x0; + void *src = mp_image_pixel_ptr(osd, 0, rc->x0, rc->y0); void *dst = vaimg.planes[0] + rc->y0 * vaimg.stride[0] + rc->x0 * 4;