Mike McCormack : wininet: Return correct errors in InternetConnectW

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 16 06:24:38 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: f57360af523bd138e1bcfdd2239a239be350a5a3
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=f57360af523bd138e1bcfdd2239a239be350a5a3

Author: Mike McCormack <mike at codeweavers.com>
Date:   Mon May 15 22:01:55 2006 +0900

wininet: Return correct errors in InternetConnectW

---

 dlls/wininet/internet.c       |   11 ++++++++++-
 dlls/wininet/tests/internet.c |   28 ++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 7642625..e58fca1 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -812,17 +812,26 @@ HINTERNET WINAPI InternetConnectW(HINTER
     DWORD dwService, DWORD dwFlags, DWORD dwContext)
 {
     LPWININETAPPINFOW hIC;
-    HINTERNET rc = (HINTERNET) NULL;
+    HINTERNET rc = NULL;
 
     TRACE("(%p, %s, %i, %s, %s, %li, %li, %li)\n", hInternet, debugstr_w(lpszServerName),
 	  nServerPort, debugstr_w(lpszUserName), debugstr_w(lpszPassword),
 	  dwService, dwFlags, dwContext);
 
+    if (!lpszServerName)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return NULL;
+    }
+
     /* Clear any error information */
     INTERNET_SetLastError(0);
     hIC = (LPWININETAPPINFOW) WININET_GetObject( hInternet );
     if ( (hIC == NULL) || (hIC->hdr.htype != WH_HINIT) )
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
         goto lend;
+    }
 
     switch (dwService)
     {
diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c
index 293656c..43d17d6 100644
--- a/dlls/wininet/tests/internet.c
+++ b/dlls/wininet/tests/internet.c
@@ -119,8 +119,36 @@ static void test_get_cookie(void)
     ret ? "TRUE" : "FALSE", GetLastError());
 }
 
+static void test_null(void)
+{
+  HINTERNET hi, hc;
+  static const WCHAR szServer[] = { 's','e','r','v','e','r',0 };
+
+  hi = InternetOpenW(NULL, 0, NULL, NULL, 0);
+  ok(hi != NULL, "open failed\n");
+
+  hc = InternetConnectW(hi, NULL, 0, NULL, NULL, 0, 0, 0);
+  ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
+  ok(hc == NULL, "connect failed\n");
+
+  hc = InternetConnectW(hi, NULL, 0, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
+  ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
+  ok(hc == NULL, "connect failed\n");
+
+  hc = InternetConnectW(hi, NULL, 0, NULL, NULL, INTERNET_SERVICE_FTP, 0, 0);
+  ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error\n");
+  ok(hc == NULL, "connect failed\n");
+
+  hc = InternetConnectW(NULL, szServer, 0, NULL, NULL, INTERNET_SERVICE_FTP, 0, 0);
+  ok(GetLastError() == ERROR_INVALID_HANDLE, "wrong error\n");
+  ok(hc == NULL, "connect failed\n");
+
+  InternetCloseHandle(hi);
+}
+
 START_TEST(internet)
 {
   InternetQueryOptionA_test();
   test_get_cookie();
+  test_null();
 }




More information about the wine-cvs mailing list