From 3437e2b082058c49dfe42464c26afd23a5d60f04 Mon Sep 17 00:00:00 2001 From: Ryan Foster Date: Thu, 13 Feb 2025 15:11:28 -0500 Subject: [PATCH] win-dshow: Fix possible crash if frame width or height is zero If a frame has a width or height of zero, this value will make it into libobs/media-io/video-frame.c:video_frame_init and cause linesizes or heights to be zero, which will result in a bmalloc(0) call and OBS will crash. Instead of letting the call stack get that far, check the frame width and height here at the source, log an error, and return early if the frame width or height are zero. --- plugins/win-dshow/win-dshow.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/win-dshow/win-dshow.cpp b/plugins/win-dshow/win-dshow.cpp index 8833180cb..1f13d7551 100644 --- a/plugins/win-dshow/win-dshow.cpp +++ b/plugins/win-dshow/win-dshow.cpp @@ -936,6 +936,12 @@ bool DShowInput::UpdateVideoConfig(obs_data_t *settings) return false; } + if (!videoConfig.cx || !videoConfig.cy_abs) { + blog(LOG_ERROR, "%s: Frame width or height are zero (%" PRIu32 "x%" PRIu32 ")", + obs_source_get_name(source), videoConfig.cx, videoConfig.cy_abs); + return false; + } + DStr formatName = GetVideoFormatName(videoConfig.internalFormat); double fps = 0.0;