wininet/tests: Check null pointer in InternetGetSecurityInfoByURLW.

Signed-off-by: Wei xie <xiewei@linuxdeepin.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Wei Xie 2018-01-09 12:06:25 +01:00 committed by Alexandre Julliard
parent 946b4ad270
commit 3f06a09604
2 changed files with 20 additions and 7 deletions

View File

@ -4462,6 +4462,11 @@ BOOL WINAPI InternetGetSecurityInfoByURLW(LPCWSTR lpszURL, PCCERT_CHAIN_CONTEXT
TRACE("(%s %p %p)\n", debugstr_w(lpszURL), ppCertChain, pdwSecureFlags);
if (!ppCertChain && !pdwSecureFlags) {
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
url.dwHostNameLength = 1;
res = InternetCrackUrlW(lpszURL, 0, 0, &url);
if(!res || url.nScheme != INTERNET_SCHEME_HTTPS) {
@ -4476,15 +4481,11 @@ BOOL WINAPI InternetGetSecurityInfoByURLW(LPCWSTR lpszURL, PCCERT_CHAIN_CONTEXT
}
if(server->cert_chain) {
const CERT_CHAIN_CONTEXT *chain_dup;
chain_dup = CertDuplicateCertificateChain(server->cert_chain);
if(chain_dup) {
*ppCertChain = chain_dup;
if(pdwSecureFlags)
*pdwSecureFlags = server->security_flags & _SECURITY_ERROR_FLAGS_MASK;
}else {
if(ppCertChain && !(*ppCertChain = CertDuplicateCertificateChain(server->cert_chain)))
res = FALSE;
}
}else {
SetLastError(ERROR_INTERNET_ITEM_NOT_FOUND);
res = FALSE;

View File

@ -5593,6 +5593,18 @@ static void _test_security_info(unsigned line, const char *urlc, DWORD error, DW
ok_(__FILE__,line)(chain != NULL, "chain = NULL\n");
ok_(__FILE__,line)(flags == ex_flags, "flags = %x\n", flags);
CertFreeCertificateChain(chain);
SetLastError(0xdeadbeef);
res = pInternetGetSecurityInfoByURLA(url, NULL, NULL);
ok_(__FILE__,line)(!res && GetLastError() == ERROR_INVALID_PARAMETER,
"InternetGetSecurityInfoByURLA returned: %x(%u)\n", res, GetLastError());
res = pInternetGetSecurityInfoByURLA(url, &chain, NULL);
ok_(__FILE__,line)(res, "InternetGetSecurityInfoByURLA failed: %u\n", GetLastError());
CertFreeCertificateChain(chain);
res = pInternetGetSecurityInfoByURLA(url, NULL, &flags);
ok_(__FILE__,line)(res, "InternetGetSecurityInfoByURLA failed: %u\n", GetLastError());
}else {
ok_(__FILE__,line)(!res && GetLastError() == error,
"InternetGetSecurityInfoByURLA returned: %x(%u), expected %u\n", res, GetLastError(), error);