From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/combase/combase.c | 3 +++ dlls/ole32/tests/compobj.c | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/combase/combase.c b/dlls/combase/combase.c index 9428f8870aa..3065076581e 100644 --- a/dlls/combase/combase.c +++ b/dlls/combase/combase.c @@ -1250,6 +1250,9 @@ HRESULT WINAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew) LONG size; CLSID id;
+ if (!clsidOld || !clsidNew) + return E_INVALIDARG; + if (FAILED(hr = open_key_for_clsid(clsidOld, NULL, KEY_READ | KEY_WRITE, &hkey))) return hr;
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 3f358a8ef8e..2c4cc566f3a 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -2277,7 +2277,7 @@ static void test_TreatAsClass(void) { HRESULT hr; CLSID out; - static GUID deadbeef = {0xdeadbeef,0xdead,0xbeef,{0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef}}; + static const GUID deadbeef = {0xdeadbeef,0xdead,0xbeef,{0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef}}; static const char deadbeefA[] = "{DEADBEEF-DEAD-BEEF-DEAD-BEEFDEADBEEF}"; IInternetProtocol *pIP = NULL; HKEY clsidkey, deadbeefkey; @@ -2297,6 +2297,15 @@ static void test_TreatAsClass(void) lr = RegOpenKeyExA(HKEY_CLASSES_ROOT, "CLSID", 0, KEY_READ, &clsidkey); ok(!lr, "Couldn't open CLSID key, error %ld\n", lr);
+ hr = CoTreatAsClass(NULL, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = CoTreatAsClass(&deadbeef, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + hr = CoTreatAsClass(NULL, &deadbeef); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + lr = RegCreateKeyExA(clsidkey, deadbeefA, 0, NULL, 0, KEY_WRITE, NULL, &deadbeefkey, NULL); if (lr) { win_skip("CoGetTreatAsClass() tests will be skipped (failed to create a test key, error %ld)\n", lr);