ole32: Avoid null pointer dereferences in CoGetTreatAsClass.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4c917e9532
commit
5a3b87a0fd
|
@ -3825,6 +3825,10 @@ HRESULT WINAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID clsidNew)
|
|||
LONG len = sizeof(szClsidNew);
|
||||
|
||||
TRACE("(%s,%p)\n", debugstr_guid(clsidOld), clsidNew);
|
||||
|
||||
if (!clsidOld || !clsidNew)
|
||||
return E_INVALIDARG;
|
||||
|
||||
*clsidNew = *clsidOld; /* copy over old value */
|
||||
|
||||
res = COM_OpenKeyForCLSID(clsidOld, wszTreatAs, KEY_READ, &hkey);
|
||||
|
|
|
@ -2176,10 +2176,18 @@ static void test_TreatAsClass(void)
|
|||
win_skip("CoGetTreatAsClass not present\n");
|
||||
return;
|
||||
}
|
||||
|
||||
hr = pCoGetTreatAsClass(&deadbeef,&out);
|
||||
ok (hr == S_FALSE, "expected S_FALSE got %x\n",hr);
|
||||
ok (IsEqualGUID(&out,&deadbeef), "expected to get same clsid back\n");
|
||||
|
||||
hr = pCoGetTreatAsClass(NULL, &out);
|
||||
ok(hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr);
|
||||
ok(IsEqualGUID(&out, &deadbeef), "expected no change to the clsid\n");
|
||||
|
||||
hr = pCoGetTreatAsClass(&deadbeef, NULL);
|
||||
ok(hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr);
|
||||
|
||||
lr = RegOpenKeyExA(HKEY_CLASSES_ROOT, "CLSID", 0, KEY_READ, &clsidkey);
|
||||
ok(!lr, "Couldn't open CLSID key, error %d\n", lr);
|
||||
|
||||
|
|
Loading…
Reference in New Issue