Piotr Caban : wininet: Handle NULL req-> netconn in INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT query.
Alexandre Julliard
julliard at winehq.org
Fri May 3 15:24:51 CDT 2013
Module: wine
Branch: master
Commit: 33d62f3f17fcd34e2ad172847ee5267fc71ed96e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=33d62f3f17fcd34e2ad172847ee5267fc71ed96e
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri May 3 15:19:22 2013 +0200
wininet: Handle NULL req->netconn in INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT query.
---
dlls/wininet/http.c | 3 +++
dlls/wininet/tests/http.c | 7 +++++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index e160d04..188259d 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -2125,6 +2125,9 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
case INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT: {
PCCERT_CONTEXT context;
+ if(!req->netconn)
+ return ERROR_INTERNET_INVALID_OPERATION;
+
if(*size < sizeof(INTERNET_CERTIFICATE_INFOA)) {
*size = sizeof(INTERNET_CERTIFICATE_INFOA);
return ERROR_INSUFFICIENT_BUFFER;
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index bfa215b..264aee7 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -3354,6 +3354,13 @@ static void test_options(int port)
ret = InternetQueryOption(req, INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO, &idsi, &size);
ok(ret, "InternetQueryOption failed %u\n", GetLastError());
+ size = 0;
+ SetLastError(0xdeadbeef);
+ ret = InternetQueryOption(req, INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, NULL, &size);
+ error = GetLastError();
+ ok(!ret, "InternetQueryOption succeeded\n");
+ ok(error == ERROR_INTERNET_INVALID_OPERATION, "expected ERROR_INTERNET_INVALID_OPERATION, got %u\n", error);
+
/* INTERNET_OPTION_PROXY */
SetLastError(0xdeadbeef);
ret = InternetQueryOptionA(ses, INTERNET_OPTION_PROXY, NULL, NULL);
More information about the wine-cvs
mailing list