[PATCH] qcap/capturegraph: Return E_POINTER when ICaptureGraphBuilder2::FindInterface() is called with NULL filter.

Gijs Vermeulen gijsvrm at gmail.com
Thu Oct 22 11:14:56 CDT 2020


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46950
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
 dlls/qcap/capturegraph.c       | 3 +++
 dlls/qcap/tests/capturegraph.c | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/dlls/qcap/capturegraph.c b/dlls/qcap/capturegraph.c
index b4f83956f0e..b98a321cb3a 100644
--- a/dlls/qcap/capturegraph.c
+++ b/dlls/qcap/capturegraph.c
@@ -343,6 +343,9 @@ static HRESULT WINAPI fnCaptureGraphBuilder2_FindInterface(ICaptureGraphBuilder2
     TRACE("graph %p, category %s, majortype %s, filter %p, iid %s, out %p.\n",
             graph, debugstr_guid(category), debugstr_guid(majortype), filter, debugstr_guid(iid), out);
 
+    if (!filter)
+        return E_POINTER;
+
     if (category && IsEqualGUID(category, &LOOK_DOWNSTREAM_ONLY))
         return find_interface_recurse(PINDIR_OUTPUT, NULL, NULL, filter, iid, out);
 
diff --git a/dlls/qcap/tests/capturegraph.c b/dlls/qcap/tests/capturegraph.c
index c37ac515734..cdd9a27828a 100644
--- a/dlls/qcap/tests/capturegraph.c
+++ b/dlls/qcap/tests/capturegraph.c
@@ -384,6 +384,10 @@ static void test_find_interface(void)
 
     /* Test search order without any restrictions applied. */
 
+    hr = ICaptureGraphBuilder2_FindInterface(capture_graph, NULL, &bogus_majortype,
+                NULL, &testiid, (void **)&unk);
+    ok(hr == E_POINTER, "got hr %#x.\n", hr);
+
     for (i = 0; i < ARRAY_SIZE(tests_from_filter2); ++i)
     {
         hr = ICaptureGraphBuilder2_FindInterface(capture_graph, NULL, &bogus_majortype,
-- 
2.29.0




More information about the wine-devel mailing list