From: Vijay Kiran Kamuju Subject: [PATCH] rasapi32: Add a few error checks in for RasGetErrorStringA and tests Message-Id: <20191122235903.1616-1-infyquest@gmail.com> Date: Sat, 23 Nov 2019 00:59:02 +0100 Supercedes 174337 Signed-off-by: Vijay Kiran Kamuju --- dlls/rasapi32/rasapi.c | 14 ++++++++++++-- dlls/rasapi32/tests/rasapi.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c index 791b0dab133e..6f0dfaa06b33 100644 --- a/dlls/rasapi32/rasapi.c +++ b/dlls/rasapi32/rasapi.c @@ -458,14 +458,24 @@ DWORD WINAPI RasGetEntryPropertiesW(LPCWSTR lpszPhonebook, LPCWSTR lpszEntry, LP DWORD WINAPI RasGetErrorStringA(UINT uErrorValue, LPSTR lpszErrorString, DWORD cBufSize) { + DWORD ret = 1; + FIXME("(0x%08x,%p,0x%08x), stub!\n", uErrorValue, lpszErrorString, cBufSize); - return 1; + if (uErrorValue < RASBASE || uErrorValue > RASBASEEND || !lpszErrorString) + ret = ERROR_INVALID_PARAMETER; + + return ret; } DWORD WINAPI RasGetErrorStringW(UINT uErrorValue, LPWSTR lpszErrorString, DWORD cBufSize) { + DWORD ret = 1; + FIXME("(0x%08x,%p,0x%08x), stub!\n", uErrorValue, lpszErrorString, cBufSize); - return 1; + if (uErrorValue < RASBASE || uErrorValue > RASBASEEND || !lpszErrorString) + ret = ERROR_INVALID_PARAMETER; + + return ret; } DWORD WINAPI RasGetProjectionInfoA(HRASCONN hrasconn, RASPROJECTION rasprojection, diff --git a/dlls/rasapi32/tests/rasapi.c b/dlls/rasapi32/tests/rasapi.c index 5171bb2762ca..d0850b8055af 100644 --- a/dlls/rasapi32/tests/rasapi.c +++ b/dlls/rasapi32/tests/rasapi.c @@ -28,6 +28,7 @@ static HMODULE hmodule; static DWORD (WINAPI *pRasEnumDevicesA)(LPRASDEVINFOA, LPDWORD, LPDWORD); +static DWORD (WINAPI *pRasGetErrorStringA)(UINT, LPSTR, DWORD); #define RASAPI32_GET_PROC(func) \ p ## func = (void*)GetProcAddress(hmodule, #func); \ @@ -39,6 +40,7 @@ static void InitFunctionPtrs(void) hmodule = LoadLibraryA("rasapi32.dll"); RASAPI32_GET_PROC(RasEnumDevicesA) + RASAPI32_GET_PROC(RasGetErrorStringA) } static void test_rasenum(void) @@ -176,11 +178,44 @@ static void test_rasenum(void) HeapFree(GetProcessHeap(), 0, rasDevInfo); } +static void test_rasgeterrorstring(void) +{ + DWORD result; + UINT errcode; + CHAR buffer[512]; + + errcode = 87; + result = pRasGetErrorStringA(errcode, buffer, 256); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + errcode = 600; + result = pRasGetErrorStringA(errcode, NULL, 256); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + errcode = 600; + result = pRasGetErrorStringA(errcode, buffer, 10); + todo_wine ok(result == ERROR_INSUFFICIENT_BUFFER, + "Expected ERROR_INSUFFICIENT_BUFFER, got %08d\n", result); + + errcode = 600; + result = pRasGetErrorStringA(errcode, buffer, 256); + todo_wine ok(result == ERROR_SUCCESS, + "Expected ERROR_SUCCESS, got %08d\n", result); + + errcode = 999; + result = pRasGetErrorStringA(errcode, buffer, 256); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); +} + START_TEST(rasapi) { InitFunctionPtrs(); test_rasenum(); + test_rasgeterrorstring(); FreeLibrary(hmodule); } -- 2.21.0