Module: wine Branch: refs/heads/master Commit: a1544731dbaf30c473be2ae254f2f24e3138babf URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=a1544731dbaf30c473be2ae2... Author: James Hawkins <truiken(a)gmail.com> Date: Fri Jul 14 16:45:46 2006 -0700 wininet: Add more tests for InternetCrackurl. --- dlls/wininet/internet.c | 7 +++++++ dlls/wininet/tests/url.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 0 deletions(-) diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 332e4f7..ebe209d 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -1323,6 +1323,13 @@ BOOL WINAPI InternetCrackUrlW(LPCWSTR lp dwUrlLength=strlenW(lpszUrl); TRACE("(%s %lu %lx %p)\n", debugstr_w(lpszUrl), dwUrlLength, dwFlags, lpUC); + + if (!lpszUrl_orig || !*lpszUrl_orig) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + if (dwFlags & ICU_DECODE) { lpszUrl_decode=HeapAlloc( GetProcessHeap(), 0, dwUrlLength * sizeof (WCHAR) ); diff --git a/dlls/wininet/tests/url.c b/dlls/wininet/tests/url.c index 56e38f1..ea09631 100644 --- a/dlls/wininet/tests/url.c +++ b/dlls/wininet/tests/url.c @@ -208,6 +208,24 @@ static void InternetCrackUrl_test(void) ok(!strcmp(urlComponents.lpszScheme, "about"), "lpszScheme was \"%s\" instead of \"about\"\n", urlComponents.lpszScheme); ok(!strcmp(urlComponents.lpszHostName, "host"), "lpszHostName was \"%s\" instead of \"host\"\n", urlComponents.lpszHostName); ok(!strcmp(urlComponents.lpszUrlPath, "/blank"), "lpszUrlPath was \"%s\" instead of \"/blank\"\n", urlComponents.lpszUrlPath); + + /* try a NULL lpszUrl */ + SetLastError(0xdeadbeef); + copy_compsA(&urlSrc, &urlComponents, 32, 1024, 1024, 1024, 2048, 1024); + ret = InternetCrackUrl(NULL, 0, 0, &urlComponents); + GLE = GetLastError(); + ok(ret == FALSE, "Expected InternetCrackUrl to fail\n"); + ok(GLE == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GLE); + + /* try an empty lpszUrl, GetLastError returns 12006, whatever that means + * we just need to fail and not return success + */ + SetLastError(0xdeadbeef); + copy_compsA(&urlSrc, &urlComponents, 32, 1024, 1024, 1024, 2048, 1024); + ret = InternetCrackUrl("", 0, 0, &urlComponents); + GLE = GetLastError(); + ok(ret == FALSE, "Expected InternetCrackUrl to fail\n"); + ok(GLE != 0xdeadbeef && GLE != ERROR_SUCCESS, "Expected GLE to represent a failure\n"); } static void InternetCrackUrlW_test(void)