Juan Lang : wininet: Returned certificate strings are always ASCII.
Alexandre Julliard
julliard at winehq.org
Fri Oct 1 11:38:46 CDT 2010
Module: wine
Branch: master
Commit: 56ebc04ab6fcda86b60697e6a8bc2119d804536c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=56ebc04ab6fcda86b60697e6a8bc2119d804536c
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Sep 30 13:09:04 2010 -0700
wininet: Returned certificate strings are always ASCII.
---
dlls/wininet/http.c | 61 ++++++++++++--------------------------------
dlls/wininet/tests/http.c | 4 ---
2 files changed, 17 insertions(+), 48 deletions(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 2266fcd..992a827 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -1820,60 +1820,33 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
case INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT: {
PCCERT_CONTEXT context;
- if(*size < sizeof(INTERNET_CERTIFICATE_INFOW)) {
- *size = sizeof(INTERNET_CERTIFICATE_INFOW);
+ if(*size < sizeof(INTERNET_CERTIFICATE_INFOA)) {
+ *size = sizeof(INTERNET_CERTIFICATE_INFOA);
return ERROR_INSUFFICIENT_BUFFER;
}
context = (PCCERT_CONTEXT)NETCON_GetCert(&(req->netConnection));
if(context) {
- INTERNET_CERTIFICATE_INFOW *info = (INTERNET_CERTIFICATE_INFOW*)buffer;
+ INTERNET_CERTIFICATE_INFOA *info = (INTERNET_CERTIFICATE_INFOA*)buffer;
DWORD len;
memset(info, 0, sizeof(INTERNET_CERTIFICATE_INFOW));
info->ftExpiry = context->pCertInfo->NotAfter;
info->ftStart = context->pCertInfo->NotBefore;
- if(unicode) {
- len = CertNameToStrW(context->dwCertEncodingType,
- &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR, NULL, 0);
- info->lpszSubjectInfo = LocalAlloc(0, len*sizeof(WCHAR));
- if(info->lpszSubjectInfo)
- CertNameToStrW(context->dwCertEncodingType,
- &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR,
- info->lpszSubjectInfo, len);
- len = CertNameToStrW(context->dwCertEncodingType,
- &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR, NULL, 0);
- info->lpszIssuerInfo = LocalAlloc(0, len*sizeof(WCHAR));
- if (info->lpszIssuerInfo)
- CertNameToStrW(context->dwCertEncodingType,
- &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR,
- info->lpszIssuerInfo, len);
- }else {
- INTERNET_CERTIFICATE_INFOA *infoA = (INTERNET_CERTIFICATE_INFOA*)info;
-
- len = CertNameToStrA(context->dwCertEncodingType,
- &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR, NULL, 0);
- infoA->lpszSubjectInfo = LocalAlloc(0, len);
- if(infoA->lpszSubjectInfo)
- CertNameToStrA(context->dwCertEncodingType,
- &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR,
- infoA->lpszSubjectInfo, len);
- len = CertNameToStrA(context->dwCertEncodingType,
- &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR, NULL, 0);
- infoA->lpszIssuerInfo = LocalAlloc(0, len);
- if(infoA->lpszIssuerInfo)
- CertNameToStrA(context->dwCertEncodingType,
- &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR,
- infoA->lpszIssuerInfo, len);
- }
-
- /*
- * Contrary to MSDN, these do not appear to be set.
- * lpszProtocolName
- * lpszSignatureAlgName
- * lpszEncryptionAlgName
- * dwKeySize
- */
+ len = CertNameToStrA(context->dwCertEncodingType,
+ &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR, NULL, 0);
+ info->lpszSubjectInfo = LocalAlloc(0, len);
+ if(info->lpszSubjectInfo)
+ CertNameToStrA(context->dwCertEncodingType,
+ &context->pCertInfo->Subject, CERT_SIMPLE_NAME_STR,
+ info->lpszSubjectInfo, len);
+ len = CertNameToStrA(context->dwCertEncodingType,
+ &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR, NULL, 0);
+ info->lpszIssuerInfo = LocalAlloc(0, len);
+ if(info->lpszIssuerInfo)
+ CertNameToStrA(context->dwCertEncodingType,
+ &context->pCertInfo->Issuer, CERT_SIMPLE_NAME_STR,
+ info->lpszIssuerInfo, len);
CertFreeCertificateContext(context);
return ERROR_SUCCESS;
}
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 0637057..d06cdf2 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -2693,11 +2693,9 @@ static void test_secure_connection(void)
ok(ret, "InternetQueryOption failed: %d\n", GetLastError());
if (ret)
{
- todo_wine
ok(certificate_structA->lpszSubjectInfo &&
strlen(certificate_structA->lpszSubjectInfo) > 1,
"expected a non-empty subject name\n");
- todo_wine
ok(certificate_structA->lpszIssuerInfo &&
strlen(certificate_structA->lpszIssuerInfo) > 1,
"expected a non-empty issuer name\n");
@@ -2726,11 +2724,9 @@ static void test_secure_connection(void)
ok(ret, "InternetQueryOption failed: %d\n", GetLastError());
if (ret)
{
- todo_wine
ok(certificate_structA->lpszSubjectInfo &&
strlen(certificate_structA->lpszSubjectInfo) > 1,
"expected a non-empty subject name\n");
- todo_wine
ok(certificate_structA->lpszIssuerInfo &&
strlen(certificate_structA->lpszIssuerInfo) > 1,
"expected a non-empty issuer name\n");
More information about the wine-cvs
mailing list