Stefan Leichter : rasapi32: Added some more tests for RasEnumDevicesA, fix Wine not to crash on the tests.

Alexandre Julliard julliard at winehq.org
Wed Jul 9 06:10:33 CDT 2008


Module: wine
Branch: master
Commit: 5e15187fd07754277c9643e47379a0fafdca432a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5e15187fd07754277c9643e47379a0fafdca432a

Author: Stefan Leichter <Stefan.Leichter at camline.com>
Date:   Sun Jul  6 15:15:37 2008 +0200

rasapi32: Added some more tests for RasEnumDevicesA, fix Wine not to crash on the tests.

---

 dlls/rasapi32/rasapi.c       |    2 +-
 dlls/rasapi32/tests/rasapi.c |   64 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 1 deletions(-)

diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c
index 2ba62e9..f14694a 100644
--- a/dlls/rasapi32/rasapi.c
+++ b/dlls/rasapi32/rasapi.c
@@ -249,7 +249,7 @@ DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA lpRasDevinfo, LPDWORD lpcb, LPDWORD l
             return ERROR_INVALID_PARAMETER;
 
 	FIXME("(%p,%p,%p),stub!\n",lpRasDevinfo,lpcb,lpcDevices);
-	if (*lpcb < sizeof(RASDEVINFOA)) {
+	if (!lpRasDevinfo || (*lpcb < sizeof(RASDEVINFOA))) {
 		*lpcb = sizeof(RASDEVINFOA);
 		return ERROR_BUFFER_TOO_SMALL;
 	}
diff --git a/dlls/rasapi32/tests/rasapi.c b/dlls/rasapi32/tests/rasapi.c
index a435180..eba492f 100644
--- a/dlls/rasapi32/tests/rasapi.c
+++ b/dlls/rasapi32/tests/rasapi.c
@@ -53,14 +53,78 @@ static void test_rasenum(void)
         return;
     }
 
+    /* test first parameter */
     result = pRasEnumDevicesA(NULL, &cb, &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);
+    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);
+    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);
+    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);
+    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);
     ok(result == ERROR_INVALID_PARAMETER,
     "Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
+
+    cb = 0;
+    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);
+    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);
+
+    /* test third parameter */
+    cb = sizeof(rasDevInfo);
+    result = pRasEnumDevicesA(&rasDevInfo, &cb, NULL);
+    ok(result == ERROR_INVALID_PARAMETER,
+    "Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
+
+    /* test combinations of invalid parameters */
+    result = pRasEnumDevicesA(NULL, NULL, &cDevices);
+    ok(result == ERROR_INVALID_PARAMETER,
+    "Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
+
+    result = pRasEnumDevicesA(NULL, &cb, NULL);
+    ok(result == ERROR_INVALID_PARAMETER,
+    "Expected ERROR_INVALID_PARAMETER, got %08d\n", result);
+
+    cb = 0;
+    rasDevInfo.dwSize = 0;
+    result = pRasEnumDevicesA(&rasDevInfo, &cb, &cDevices);
+    todo_wine
+    ok(result == ERROR_INVALID_SIZE,
+    "Expected ERROR_INVALID_SIZE, got %08d\n", result);
 }
 
 START_TEST(rasapi)




More information about the wine-cvs mailing list