dinput: Add more parameter checking to enum devices.
This commit is contained in:
parent
a84d2fe20e
commit
310859db67
|
@ -208,7 +208,8 @@ static void _dump_EnumDevices_dwFlags(DWORD dwFlags) {
|
||||||
FE(DIEDFL_ATTACHEDONLY),
|
FE(DIEDFL_ATTACHEDONLY),
|
||||||
FE(DIEDFL_FORCEFEEDBACK),
|
FE(DIEDFL_FORCEFEEDBACK),
|
||||||
FE(DIEDFL_INCLUDEALIASES),
|
FE(DIEDFL_INCLUDEALIASES),
|
||||||
FE(DIEDFL_INCLUDEPHANTOMS)
|
FE(DIEDFL_INCLUDEPHANTOMS),
|
||||||
|
FE(DIEDFL_INCLUDEHIDDEN)
|
||||||
#undef FE
|
#undef FE
|
||||||
};
|
};
|
||||||
TRACE(" flags: ");
|
TRACE(" flags: ");
|
||||||
|
@ -356,7 +357,9 @@ static HRESULT WINAPI IDirectInputAImpl_EnumDevices(
|
||||||
lpCallback, pvRef, dwFlags);
|
lpCallback, pvRef, dwFlags);
|
||||||
_dump_EnumDevices_dwFlags(dwFlags);
|
_dump_EnumDevices_dwFlags(dwFlags);
|
||||||
|
|
||||||
if (!lpCallback)
|
if (!lpCallback ||
|
||||||
|
dwFlags & ~(DIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK | DIEDFL_INCLUDEALIASES | DIEDFL_INCLUDEPHANTOMS | DIEDFL_INCLUDEHIDDEN) ||
|
||||||
|
dwDevType > 4)
|
||||||
return DIERR_INVALIDPARAM;
|
return DIERR_INVALIDPARAM;
|
||||||
|
|
||||||
if (!This->initialized)
|
if (!This->initialized)
|
||||||
|
@ -393,7 +396,9 @@ static HRESULT WINAPI IDirectInputWImpl_EnumDevices(
|
||||||
lpCallback, pvRef, dwFlags);
|
lpCallback, pvRef, dwFlags);
|
||||||
_dump_EnumDevices_dwFlags(dwFlags);
|
_dump_EnumDevices_dwFlags(dwFlags);
|
||||||
|
|
||||||
if (!lpCallback)
|
if (!lpCallback ||
|
||||||
|
dwFlags & ~(DIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK | DIEDFL_INCLUDEALIASES | DIEDFL_INCLUDEPHANTOMS | DIEDFL_INCLUDEHIDDEN) ||
|
||||||
|
dwDevType > 4)
|
||||||
return DIERR_INVALIDPARAM;
|
return DIERR_INVALIDPARAM;
|
||||||
|
|
||||||
if (!This->initialized)
|
if (!This->initialized)
|
||||||
|
|
|
@ -86,11 +86,11 @@ static void test_preinitialization(void)
|
||||||
{0, NULL, 0, DIERR_INVALIDPARAM},
|
{0, NULL, 0, DIERR_INVALIDPARAM},
|
||||||
{0, NULL, ~0u, DIERR_INVALIDPARAM},
|
{0, NULL, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0, dummy_callback, 0, DIERR_NOTINITIALIZED},
|
{0, dummy_callback, 0, DIERR_NOTINITIALIZED},
|
||||||
{0, dummy_callback, ~0u, DIERR_INVALIDPARAM, 1},
|
{0, dummy_callback, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, NULL, 0, DIERR_INVALIDPARAM},
|
{0xdeadbeef, NULL, 0, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, NULL, ~0u, DIERR_INVALIDPARAM},
|
{0xdeadbeef, NULL, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, dummy_callback, 0, DIERR_INVALIDPARAM, 1},
|
{0xdeadbeef, dummy_callback, 0, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, dummy_callback, ~0u, DIERR_INVALIDPARAM, 1},
|
{0xdeadbeef, dummy_callback, ~0u, DIERR_INVALIDPARAM},
|
||||||
};
|
};
|
||||||
|
|
||||||
IDirectInputA *pDI;
|
IDirectInputA *pDI;
|
||||||
|
@ -434,11 +434,9 @@ static void test_EnumDevices(void)
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
hr = IDirectInput_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, 0);
|
hr = IDirectInput_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, 0);
|
||||||
todo_wine
|
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
hr = IDirectInput_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, ~0u);
|
hr = IDirectInput_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, ~0u);
|
||||||
todo_wine
|
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
enum_test.device_count = 0;
|
enum_test.device_count = 0;
|
||||||
|
|
|
@ -63,11 +63,11 @@ static void test_preinitialization(void)
|
||||||
{0, NULL, 0, DIERR_INVALIDPARAM},
|
{0, NULL, 0, DIERR_INVALIDPARAM},
|
||||||
{0, NULL, ~0u, DIERR_INVALIDPARAM},
|
{0, NULL, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0, dummy_callback, 0, DIERR_NOTINITIALIZED},
|
{0, dummy_callback, 0, DIERR_NOTINITIALIZED},
|
||||||
{0, dummy_callback, ~0u, DIERR_INVALIDPARAM, 1},
|
{0, dummy_callback, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, NULL, 0, DIERR_INVALIDPARAM},
|
{0xdeadbeef, NULL, 0, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, NULL, ~0u, DIERR_INVALIDPARAM},
|
{0xdeadbeef, NULL, ~0u, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, dummy_callback, 0, DIERR_INVALIDPARAM, 1},
|
{0xdeadbeef, dummy_callback, 0, DIERR_INVALIDPARAM},
|
||||||
{0xdeadbeef, dummy_callback, ~0u, DIERR_INVALIDPARAM, 1},
|
{0xdeadbeef, dummy_callback, ~0u, DIERR_INVALIDPARAM},
|
||||||
};
|
};
|
||||||
|
|
||||||
IDirectInput8A *pDI;
|
IDirectInput8A *pDI;
|
||||||
|
@ -404,11 +404,9 @@ static void test_EnumDevices(void)
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
hr = IDirectInput8_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, 0);
|
hr = IDirectInput8_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, 0);
|
||||||
todo_wine
|
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
hr = IDirectInput8_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, ~0u);
|
hr = IDirectInput8_EnumDevices(pDI, 0xdeadbeef, enum_devices_callback, NULL, ~0u);
|
||||||
todo_wine
|
|
||||||
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
ok(hr == DIERR_INVALIDPARAM, "IDirectInput8_EnumDevices returned 0x%08x\n", hr);
|
||||||
|
|
||||||
enum_test.device_count = 0;
|
enum_test.device_count = 0;
|
||||||
|
|
Loading…
Reference in New Issue