[PATCH 3/3] dxva2: Limit allowed number of substreams in CreateVideoProcessor().

Nikolay Sivov nsivov at codeweavers.com
Tue Nov 2 14:05:39 CDT 2021


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/dxva2/main.c        | 6 ++++++
 dlls/dxva2/tests/dxva2.c | 2 --
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index 81c32692f7f..46f5a7af485 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -496,6 +496,12 @@ static HRESULT WINAPI device_manager_processor_service_CreateVideoProcessor(IDir
 
     /* FIXME: validate render target format */
 
+    if (max_substreams >= 16)
+    {
+        WARN("Invalid substreams count %u.\n", max_substreams);
+        return E_INVALIDARG;
+    }
+
     if (!(object = heap_alloc_zero(sizeof(*object))))
         return E_OUTOFMEMORY;
 
diff --git a/dlls/dxva2/tests/dxva2.c b/dlls/dxva2/tests/dxva2.c
index 75c23dfdcda..e3307032ad4 100644
--- a/dlls/dxva2/tests/dxva2.c
+++ b/dlls/dxva2/tests/dxva2.c
@@ -470,9 +470,7 @@ static void test_video_processor(void)
     /* Number of substreams does not include reference stream. */
     hr = IDirectXVideoProcessorService_CreateVideoProcessor(service, &DXVA2_VideoProcSoftwareDevice, &video_desc,
             D3DFMT_A8R8G8B8, 16, &processor);
-todo_wine
     ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
-    if (SUCCEEDED(hr)) IDirectXVideoProcessor_Release(processor);
 
     hr = IDirectXVideoProcessorService_CreateVideoProcessor(service, &DXVA2_VideoProcSoftwareDevice, &video_desc,
             D3DFMT_A8R8G8B8, 15, &processor);
-- 
2.33.0




More information about the wine-devel mailing list