ole32: Add validation of parameters to CoGetClassObject and make sure to initialise ppv to NULL.
This commit is contained in:
parent
932a2a0d54
commit
69e10bf1ed
@ -1618,6 +1618,17 @@ HRESULT WINAPI CoGetClassObject(
|
|||||||
|
|
||||||
TRACE("\n\tCLSID:\t%s,\n\tIID:\t%s\n", debugstr_guid(rclsid), debugstr_guid(iid));
|
TRACE("\n\tCLSID:\t%s,\n\tIID:\t%s\n", debugstr_guid(rclsid), debugstr_guid(iid));
|
||||||
|
|
||||||
|
if (!ppv)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
*ppv = NULL;
|
||||||
|
|
||||||
|
if (!COM_CurrentApt())
|
||||||
|
{
|
||||||
|
ERR("apartment not initialised\n");
|
||||||
|
return CO_E_NOTINITIALIZED;
|
||||||
|
}
|
||||||
|
|
||||||
if (pServerInfo) {
|
if (pServerInfo) {
|
||||||
FIXME("\tpServerInfo: name=%s\n",debugstr_w(pServerInfo->pwszName));
|
FIXME("\tpServerInfo: name=%s\n",debugstr_w(pServerInfo->pwszName));
|
||||||
FIXME("\t\tpAuthInfo=%p\n",pServerInfo->pAuthInfo);
|
FIXME("\t\tpAuthInfo=%p\n",pServerInfo->pAuthInfo);
|
||||||
|
@ -100,6 +100,17 @@ static void test_CoCreateInstance(void)
|
|||||||
ok(hr == CO_E_NOTINITIALIZED, "CoCreateInstance should have returned CO_E_NOTINITIALIZED instead of 0x%08lx\n", hr);
|
ok(hr == CO_E_NOTINITIALIZED, "CoCreateInstance should have returned CO_E_NOTINITIALIZED instead of 0x%08lx\n", hr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_CoGetClassObject(void)
|
||||||
|
{
|
||||||
|
IUnknown *pUnk = (IUnknown *)0xdeadbeef;
|
||||||
|
HRESULT hr = CoGetClassObject(&CLSID_MyComputer, CLSCTX_INPROC_SERVER, NULL, &IID_IUnknown, (void **)&pUnk);
|
||||||
|
ok(hr == CO_E_NOTINITIALIZED, "CoGetClassObject should have returned CO_E_NOTINITIALIZED instead of 0x%08lx\n", hr);
|
||||||
|
ok(pUnk == NULL, "CoGetClassObject should have changed the passed in pointer to NULL, instead of %p\n", pUnk);
|
||||||
|
|
||||||
|
hr = CoGetClassObject(&CLSID_MyComputer, CLSCTX_INPROC_SERVER, NULL, &IID_IUnknown, NULL);
|
||||||
|
ok(hr == E_INVALIDARG, "CoGetClassObject should have returned E_INVALIDARG instead of 0x%08lx\n", hr);
|
||||||
|
}
|
||||||
|
|
||||||
static ATOM register_dummy_class(void)
|
static ATOM register_dummy_class(void)
|
||||||
{
|
{
|
||||||
WNDCLASS wc =
|
WNDCLASS wc =
|
||||||
@ -138,4 +149,5 @@ START_TEST(compobj)
|
|||||||
test_CLSIDFromString();
|
test_CLSIDFromString();
|
||||||
test_CoCreateInstance();
|
test_CoCreateInstance();
|
||||||
test_ole_menu();
|
test_ole_menu();
|
||||||
|
test_CoGetClassObject();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user