Zhiyi Zhang : dxgi: Check NULL adapter parameter in dxgi_factory_EnumAdapterByLuid().
Module: wine Branch: master Commit: 23a8887ded0e45b422c25a183adcb54ee0999eb3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=23a8887ded0e45b422c25a183... Author: Zhiyi Zhang <zzhang(a)codeweavers.com> Date: Thu Feb 20 20:48:04 2020 +0800 dxgi: Check NULL adapter parameter in dxgi_factory_EnumAdapterByLuid(). Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dxgi/factory.c | 3 +++ dlls/dxgi/tests/dxgi.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/dlls/dxgi/factory.c b/dlls/dxgi/factory.c index a0038b4fe7..3f41df9e36 100644 --- a/dlls/dxgi/factory.c +++ b/dlls/dxgi/factory.c @@ -403,6 +403,9 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapterByLuid(IWineDXGIFactory TRACE("iface %p, luid %08x:%08x, iid %s, adapter %p.\n", iface, luid.HighPart, luid.LowPart, debugstr_guid(iid), adapter); + if (!adapter) + return DXGI_ERROR_INVALID_CALL; + adapter_index = 0; while ((hr = dxgi_factory_EnumAdapters1(iface, adapter_index, &adapter1)) == S_OK) { diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c index f8e63ea25e..3ff42c4bc6 100644 --- a/dlls/dxgi/tests/dxgi.c +++ b/dlls/dxgi/tests/dxgi.c @@ -912,6 +912,10 @@ static void test_adapter_luid(void) return; } + hr = IDXGIFactory4_EnumAdapterByLuid(factory4, device_adapter_desc.AdapterLuid, + &IID_IDXGIAdapter, NULL); + ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr); + hr = IDXGIFactory4_EnumAdapterByLuid(factory4, device_adapter_desc.AdapterLuid, &IID_IDXGIAdapter, (void **)&adapter); todo_wine ok(hr == S_OK, "Failed to enum adapter by LUID, hr %#x.\n", hr); @@ -4949,6 +4953,9 @@ static void test_multi_adapter(void) return; } + hr = IDXGIFactory_EnumAdapters(factory, 0, NULL); + ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr); + hr = IDXGIFactory_EnumAdapters(factory, 0, &adapter); if (hr == DXGI_ERROR_NOT_FOUND) {
participants (1)
-
Alexandre Julliard