Module: wine Branch: master Commit: 4cda419575e11a29d65d995c764ce616f3964ce3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4cda419575e11a29d65d995c76...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Sep 4 11:34:59 2014 +0200
wininet/tests: Fixed security flags tests on IE11.
---
dlls/wininet/tests/http.c | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-)
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c index 3d09917..0a840a2 100644 --- a/dlls/wininet/tests/http.c +++ b/dlls/wininet/tests/http.c @@ -32,6 +32,12 @@
#include "wine/test.h"
+/* Undocumented security flags */ +#define _SECURITY_FLAG_CERT_REV_FAILED 0x00800000 +#define _SECURITY_FLAG_CERT_INVALID_CA 0x01000000 +#define _SECURITY_FLAG_CERT_INVALID_CN 0x02000000 +#define _SECURITY_FLAG_CERT_INVALID_DATE 0x04000000 + #define TEST_URL "http://test.winehq.org/tests/hello.html"
static BOOL first_connection_to_test_url = TRUE; @@ -4251,8 +4257,8 @@ static void _test_security_info(unsigned line, const char *urlc, DWORD error, DW } }
-#define test_secflags_option(a,b) _test_secflags_option(__LINE__,a,b) -static void _test_secflags_option(unsigned line, HINTERNET req, DWORD ex_flags) +#define test_secflags_option(a,b,c) _test_secflags_option(__LINE__,a,b,c) +static void _test_secflags_option(unsigned line, HINTERNET req, DWORD ex_flags, DWORD opt_flags) { DWORD flags, size; BOOL res; @@ -4261,14 +4267,16 @@ static void _test_secflags_option(unsigned line, HINTERNET req, DWORD ex_flags) size = sizeof(flags); res = InternetQueryOptionW(req, INTERNET_OPTION_SECURITY_FLAGS, &flags, &size); ok_(__FILE__,line)(res, "InternetQueryOptionW(INTERNET_OPTION_SECURITY_FLAGS) failed: %u\n", GetLastError()); - ok_(__FILE__,line)(flags == ex_flags, "INTERNET_OPTION_SECURITY_FLAGS flags = %x, expected %x\n", flags, ex_flags); + ok_(__FILE__,line)((flags & ~opt_flags) == ex_flags, "INTERNET_OPTION_SECURITY_FLAGS flags = %x, expected %x\n", + flags, ex_flags);
/* Option 98 is undocumented and seems to be the same as INTERNET_OPTION_SECURITY_FLAGS */ flags = 0xdeadbeef; size = sizeof(flags); res = InternetQueryOptionW(req, 98, &flags, &size); ok_(__FILE__,line)(res, "InternetQueryOptionW(98) failed: %u\n", GetLastError()); - ok_(__FILE__,line)(flags == ex_flags, "INTERNET_OPTION_SECURITY_FLAGS(98) flags = %x, expected %x\n", flags, ex_flags); + ok_(__FILE__,line)((flags & ~opt_flags) == ex_flags, "INTERNET_OPTION_SECURITY_FLAGS(98) flags = %x, expected %x\n", + flags, ex_flags); }
#define set_secflags(a,b,c) _set_secflags(__LINE__,a,b,c) @@ -4321,17 +4329,17 @@ static void test_security_flags(void) return; }
- test_secflags_option(req, 0); + test_secflags_option(req, 0, 0); test_security_info("https://test.winehq.com/data/some_file.html?q", ERROR_INTERNET_ITEM_NOT_FOUND, 0);
set_secflags(req, TRUE, SECURITY_FLAG_IGNORE_REVOCATION); - test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION); + test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION, 0);
set_secflags(req, TRUE, SECURITY_FLAG_IGNORE_CERT_CN_INVALID); - test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID); + test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID, 0);
set_secflags(req, FALSE, SECURITY_FLAG_IGNORE_UNKNOWN_CA); - test_secflags_option(req, SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID); + test_secflags_option(req, SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID, 0);
flags = SECURITY_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_SECURE; res = InternetSetOptionW(req, 99, &flags, sizeof(flags)); @@ -4375,7 +4383,7 @@ static void test_security_flags(void)
test_request_flags(req, 0); test_secflags_option(req, SECURITY_FLAG_SECURE|SECURITY_FLAG_IGNORE_UNKNOWN_CA - |SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_STRENGTH_STRONG); + |SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_STRENGTH_STRONG, 0);
res = InternetReadFile(req, buf, sizeof(buf), &size); ok(res, "InternetReadFile failed: %u\n", GetLastError()); @@ -4460,10 +4468,12 @@ static void test_security_flags(void) ok(!res && GetLastError() == ERROR_HTTP_HEADER_NOT_FOUND, "HttpQueryInfoA(HTTP_QUERY_CONTENT_ENCODING) failed: %u\n", GetLastError());
test_request_flags(req, 8); - test_secflags_option(req, 0x800000); + /* IE11 finds both rev failure and invalid CA. Previous versions required rev failure + to be ignored before invalid CA was reported. */ + test_secflags_option(req, _SECURITY_FLAG_CERT_REV_FAILED, _SECURITY_FLAG_CERT_INVALID_CA);
set_secflags(req, FALSE, SECURITY_FLAG_IGNORE_REVOCATION); - test_secflags_option(req, 0x800000|SECURITY_FLAG_IGNORE_REVOCATION); + test_secflags_option(req, _SECURITY_FLAG_CERT_REV_FAILED|SECURITY_FLAG_IGNORE_REVOCATION, _SECURITY_FLAG_CERT_INVALID_CA);
SET_EXPECT(INTERNET_STATUS_CONNECTING_TO_SERVER); SET_EXPECT(INTERNET_STATUS_CONNECTED_TO_SERVER); @@ -4488,12 +4498,12 @@ static void test_security_flags(void) CLEAR_NOTIFIED(INTERNET_STATUS_DETECTING_PROXY);
test_request_flags(req, INTERNET_REQFLAG_NO_HEADERS); - test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION|0x1800000); + test_secflags_option(req, SECURITY_FLAG_IGNORE_REVOCATION|_SECURITY_FLAG_CERT_REV_FAILED|_SECURITY_FLAG_CERT_INVALID_CA, 0); test_security_info("https://test.winehq.com/data/some_file.html?q", ERROR_INTERNET_ITEM_NOT_FOUND, 0);
set_secflags(req, FALSE, SECURITY_FLAG_IGNORE_UNKNOWN_CA); - test_secflags_option(req, 0x1800000|SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_UNKNOWN_CA - |SECURITY_FLAG_IGNORE_REVOCATION); + test_secflags_option(req, _SECURITY_FLAG_CERT_INVALID_CA|_SECURITY_FLAG_CERT_REV_FAILED + |SECURITY_FLAG_IGNORE_REVOCATION|SECURITY_FLAG_IGNORE_UNKNOWN_CA, 0); test_http_version(req);
SET_EXPECT(INTERNET_STATUS_CONNECTING_TO_SERVER); @@ -4530,10 +4540,11 @@ static void test_security_flags(void)
test_request_flags(req, 0); test_secflags_option(req, SECURITY_FLAG_SECURE|SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_IGNORE_REVOCATION - |SECURITY_FLAG_STRENGTH_STRONG|0x1800000); + |SECURITY_FLAG_STRENGTH_STRONG|_SECURITY_FLAG_CERT_REV_FAILED|_SECURITY_FLAG_CERT_INVALID_CA, 0);
test_cert_struct(req, &test_winehq_com_cert); - test_security_info("https://test.winehq.com/data/some_file.html?q", 0, 0x1800000); + test_security_info("https://test.winehq.com/data/some_file.html?q", 0, + _SECURITY_FLAG_CERT_INVALID_CA|_SECURITY_FLAG_CERT_REV_FAILED);
res = InternetReadFile(req, buf, sizeof(buf), &size); ok(res, "InternetReadFile failed: %u\n", GetLastError()); @@ -4566,7 +4577,7 @@ static void test_security_flags(void) CHECK_NOTIFIED(INTERNET_STATUS_HANDLE_CREATED);
test_secflags_option(req, SECURITY_FLAG_SECURE|SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_STRENGTH_STRONG - |SECURITY_FLAG_IGNORE_REVOCATION|0x1800000); + |SECURITY_FLAG_IGNORE_REVOCATION|_SECURITY_FLAG_CERT_REV_FAILED|_SECURITY_FLAG_CERT_INVALID_CA, 0); test_http_version(req);
SET_EXPECT(INTERNET_STATUS_CONNECTING_TO_SERVER); @@ -4601,7 +4612,7 @@ static void test_security_flags(void)
test_request_flags(req, 0); test_secflags_option(req, SECURITY_FLAG_SECURE|SECURITY_FLAG_IGNORE_UNKNOWN_CA|SECURITY_FLAG_STRENGTH_STRONG - |SECURITY_FLAG_IGNORE_REVOCATION|0x1800000); + |SECURITY_FLAG_IGNORE_REVOCATION|_SECURITY_FLAG_CERT_REV_FAILED|_SECURITY_FLAG_CERT_INVALID_CA, 0);
res = InternetReadFile(req, buf, sizeof(buf), &size); ok(res, "InternetReadFile failed: %u\n", GetLastError());