Stefan Leichter : rasapi32: RasEnumDevicesA test: initialize the input parameters before each call, make sure the return buffer is big enough.
Alexandre Julliard
julliard at winehq.org
Fri Jul 18 06:46:53 CDT 2008
Module: wine
Branch: master
Commit: 67201a145f0a088a22c4572f748d27b682355cf7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=67201a145f0a088a22c4572f748d27b682355cf7
Author: Stefan Leichter <Stefan.Leichter at camline.com>
Date: Thu Jul 17 22:19:00 2008 +0200
rasapi32: RasEnumDevicesA test: initialize the input parameters before each call, make sure the return buffer is big enough.
---
dlls/rasapi32/tests/rasapi.c | 67 +++++++++++++++++++++++++----------------
1 files changed, 41 insertions(+), 26 deletions(-)
diff --git a/dlls/rasapi32/tests/rasapi.c b/dlls/rasapi32/tests/rasapi.c
index eba492f..4130392 100644
--- a/dlls/rasapi32/tests/rasapi.c
+++ b/dlls/rasapi32/tests/rasapi.c
@@ -44,69 +44,82 @@ static void test_rasenum(void)
{
DWORD result;
DWORD cDevices = 0;
- DWORD cb = 0;
- RASDEVINFOA rasDevInfo;
- rasDevInfo.dwSize = sizeof(rasDevInfo);
+ DWORD bufsize = 0, cb = 0;
+ LPRASDEVINFOA rasDevInfo;
if(!pRasEnumDevicesA) {
win_skip("Skipping RasEnumDevicesA tests, function not present\n");
return;
}
- /* test first parameter */
- result = pRasEnumDevicesA(NULL, &cb, &cDevices);
+ /* create the return buffer */
+ result = pRasEnumDevicesA(NULL, &bufsize, &cDevices);
trace("RasEnumDevicesA: buffersize %d\n", cb);
ok(result == ERROR_BUFFER_TOO_SMALL,
"Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
- cb = sizeof(rasDevInfo);
+ rasDevInfo = (LPRASDEVINFO) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+ max(bufsize,sizeof(RASDEVINFOA)));
+ if(!rasDevInfo) {
+ win_skip("failed to allocate buffer for RasEnumDevicesA tests\n");
+ return;
+ }
+
+ /* test first parameter */
+ cb = bufsize;
result = pRasEnumDevicesA(NULL, &cb, &cDevices);
ok(result == ERROR_BUFFER_TOO_SMALL,
"Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
- rasDevInfo.dwSize = 0;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ rasDevInfo[0].dwSize = 0;
+ cb = bufsize;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
todo_wine
ok(result == ERROR_INVALID_SIZE,
"Expected ERROR_INVALID_SIZE, got %08d\n", result);
- rasDevInfo.dwSize = sizeof(rasDevInfo) -1;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA) -1;
+ cb = bufsize;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
todo_wine
ok(result == ERROR_INVALID_SIZE,
"Expected ERROR_INVALID_SIZE, got %08d\n", result);
- rasDevInfo.dwSize = sizeof(rasDevInfo) +1;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA) +1;
+ cb = bufsize;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
todo_wine
ok(result == ERROR_INVALID_SIZE,
"Expected ERROR_INVALID_SIZE, got %08d\n", result);
/* test second parameter */
- rasDevInfo.dwSize = sizeof(rasDevInfo);
- result = pRasEnumDevicesA(&rasDevInfo, NULL, &cDevices);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA);
+ result = pRasEnumDevicesA(rasDevInfo, NULL, &cDevices);
ok(result == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA);
cb = 0;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
ok(result == ERROR_BUFFER_TOO_SMALL,
"Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
- cb = sizeof(rasDevInfo) -1;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA);
+ cb = bufsize -1;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
ok(result == ERROR_BUFFER_TOO_SMALL,
"Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
- cb = sizeof(rasDevInfo) +1;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
- todo_wine
- ok(result == ERROR_BUFFER_TOO_SMALL,
- "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA);
+ cb = bufsize +1;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
+ ok(result == ERROR_SUCCESS,
+ "Expected ERROR_SUCCESS, got %08d\n", result);
/* test third parameter */
- cb = sizeof(rasDevInfo);
- result = pRasEnumDevicesA(&rasDevInfo, &cb, NULL);
+ rasDevInfo[0].dwSize = sizeof(RASDEVINFOA);
+ cb = bufsize;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, NULL);
ok(result == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
@@ -120,11 +133,13 @@ static void test_rasenum(void)
"Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
cb = 0;
- rasDevInfo.dwSize = 0;
- result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+ rasDevInfo[0].dwSize = 0;
+ result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices);
todo_wine
ok(result == ERROR_INVALID_SIZE,
"Expected ERROR_INVALID_SIZE, got %08d\n", result);
+
+ HeapFree(GetProcessHeap(), 0, rasDevInfo);
}
START_TEST(rasapi)
More information about the wine-cvs
mailing list