From 01e21366cb935f8e50aa2bca8a81de117e9ead48 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Sun, 29 Jun 2008 16:01:45 +0200 Subject: [PATCH] wininet: Avoid a crash on an invalid handle in InternetQueryOption. --- dlls/wininet/internet.c | 2 +- dlls/wininet/tests/internet.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 388a2a9c39..fb71de4e08 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -1904,7 +1904,7 @@ static BOOL INET_QueryOptionHelper(BOOL bIsUnicode, HINTERNET hInternet, DWORD d TRACE("INTERNET_OPTION_USER_AGENT\n"); - if (lpwhh->htype != INTERNET_HANDLE_TYPE_INTERNET) + if (!lpwhh || lpwhh->htype != INTERNET_HANDLE_TYPE_INTERNET) { INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE); return FALSE; diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index 2f88f586ce..8eb7cc63f3 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -149,6 +149,12 @@ static void test_InternetQueryOptionA(void) hinet = InternetOpenA(useragent,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL, 0); ok((hinet != 0x0),"InternetOpen Failed\n"); + SetLastError(0xdeadbeef); + retval=InternetQueryOptionA(NULL,INTERNET_OPTION_USER_AGENT,NULL,&len); + err=GetLastError(); + ok(retval == 0,"Got wrong return value %d\n",retval); + ok(err == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Got wrong error code%d\n",err); + SetLastError(0xdeadbeef); len=strlen(useragent)+1; retval=InternetQueryOptionA(hinet,INTERNET_OPTION_USER_AGENT,NULL,&len); -- 2.32.0.93.g670b81a890