Module: wine Branch: master Commit: 33d62f3f17fcd34e2ad172847ee5267fc71ed96e URL: http://source.winehq.org/git/wine.git/?a=commit;h=33d62f3f17fcd34e2ad172847e...
Author: Piotr Caban piotr@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);