Module: wine Branch: master Commit: 66820122091fa678804fabd75daec4deb10316ef URL: http://source.winehq.org/git/wine.git/?a=commit;h=66820122091fa678804fabd75d...
Author: Juan Lang juan.lang@gmail.com Date: Fri Sep 21 11:34:53 2007 -0700
setupapi: Add error checking to SetupDiCreateDeviceInterfaceW stub.
---
dlls/setupapi/devinst.c | 26 ++++++++++++++++++++++++++ dlls/setupapi/tests/devinst.c | 5 ----- 2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 2129296..f316c72 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -1800,10 +1800,36 @@ BOOL WINAPI SetupDiCreateDeviceInterfaceW( DWORD CreationFlags, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData) { + struct DeviceInfoSet *set = (struct DeviceInfoSet *)DeviceInfoSet; + struct DeviceInfo *devInfo; + TRACE("%p %p %s %s %08x %p\n", DeviceInfoSet, DeviceInfoData, debugstr_guid(InterfaceClassGuid), debugstr_w(ReferenceString), CreationFlags, DeviceInterfaceData);
+ if (!DeviceInfoSet || DeviceInfoSet == (HDEVINFO)INVALID_HANDLE_VALUE) + { + SetLastError(ERROR_INVALID_HANDLE); + return FALSE; + } + if (set->magic != SETUP_DEVICE_INFO_SET_MAGIC) + { + SetLastError(ERROR_INVALID_HANDLE); + return FALSE; + } + if (!DeviceInfoData || DeviceInfoData->cbSize != sizeof(SP_DEVINFO_DATA) + || !DeviceInfoData->Reserved) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + if (!InterfaceClassGuid) + { + SetLastError(ERROR_INVALID_USER_BUFFER); + return FALSE; + } + devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved; + FIXME("stub\n"); return FALSE; } diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index cdeb429..8bf3a25 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -351,12 +351,10 @@ static void testCreateDeviceInterface(void) } SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInterfaceA(NULL, NULL, NULL, NULL, 0, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInterfaceA(NULL, NULL, &guid, NULL, 0, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); set = pSetupDiCreateDeviceInfoList(&guid, NULL); @@ -369,13 +367,11 @@ static void testCreateDeviceInterface(void)
SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInterfaceA(set, NULL, NULL, NULL, 0, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInterfaceA(set, &devInfo, NULL, NULL, 0, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); devInfo.cbSize = sizeof(devInfo); @@ -385,7 +381,6 @@ static void testCreateDeviceInterface(void) SetLastError(0xdeadbeef); ret = pSetupDiCreateDeviceInterfaceA(set, &devInfo, NULL, NULL, 0, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_USER_BUFFER, "Expected ERROR_INVALID_USER_BUFFER, got %08x\n", GetLastError()); ret = pSetupDiCreateDeviceInterfaceA(set, &devInfo, &guid, NULL, 0,