Module: wine Branch: master Commit: af5e168f169a6024c5d618a5696f47faf27a4505 URL: http://source.winehq.org/git/wine.git/?a=commit;h=af5e168f169a6024c5d618a569...
Author: Alexander Morozov amorozov@etersoft.ru Date: Thu Apr 17 20:28:14 2008 +0400
setupapi: SetupDiGetDeviceRegistryProperty should return ERROR_INVALID_DATA when buffer size is not 0 but buffer is NULL.
---
dlls/setupapi/devinst.c | 10 ++++++++++ dlls/setupapi/tests/devinst.c | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 25fa0b5..2b0f920 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -3110,6 +3110,11 @@ BOOL WINAPI SetupDiGetDeviceRegistryPropertyA( SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } + if (PropertyBufferSize && PropertyBuffer == NULL) + { + SetLastError(ERROR_INVALID_DATA); + return FALSE; + } devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved; if (Property < sizeof(PropertyMap) / sizeof(PropertyMap[0]) && PropertyMap[Property].nameA) @@ -3166,6 +3171,11 @@ BOOL WINAPI SetupDiGetDeviceRegistryPropertyW( SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } + if (PropertyBufferSize && PropertyBuffer == NULL) + { + SetLastError(ERROR_INVALID_DATA); + return FALSE; + } devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved; if (Property < sizeof(PropertyMap) / sizeof(PropertyMap[0]) && PropertyMap[Property].nameW) diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c index b55565d..f3f6c99 100644 --- a/dlls/setupapi/tests/devinst.c +++ b/dlls/setupapi/tests/devinst.c @@ -917,7 +917,6 @@ static void testDeviceRegistryPropertyA() SetLastError(0xdeadbeef); ret = pSetupDiGetDeviceRegistryPropertyA(set, &devInfo, SPDRP_FRIENDLYNAME, NULL, NULL, buflen, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); SetLastError(0xdeadbeef); @@ -1011,7 +1010,6 @@ static void testDeviceRegistryPropertyW() SetLastError(0xdeadbeef); ret = pSetupDiGetDeviceRegistryPropertyW(set, &devInfo, SPDRP_FRIENDLYNAME, NULL, NULL, buflen, NULL); - todo_wine ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); SetLastError(0xdeadbeef);