crypt32: Fix 'CertStrToName's 'CERT_NAME_STR_NO_QUOTING_FLAG' usage. (try 2)

Christian Inci chris.pcguy.inci at gmail.com
Sat Apr 16 18:22:10 CDT 2011


---
 dlls/crypt32/str.c       |    6 +++---
 dlls/crypt32/tests/str.c |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/crypt32/str.c b/dlls/crypt32/str.c
index 24f7c55..7444575 100644
--- a/dlls/crypt32/str.c
+++ b/dlls/crypt32/str.c
@@ -971,7 +971,7 @@ static BOOL CRYPT_EncodeValue(DWORD dwCertEncodingType,
 }
 
 static BOOL CRYPT_ValueToRDN(DWORD dwCertEncodingType, PCERT_NAME_INFO info,
- PCCRYPT_OID_INFO keyOID, struct X500TokenW *value, LPCWSTR *ppszError)
+ PCCRYPT_OID_INFO keyOID, struct X500TokenW *value, DWORD dwStrType, LPCWSTR *ppszError)
 {
     BOOL ret = FALSE;
 
@@ -1005,7 +1005,7 @@ static BOOL CRYPT_ValueToRDN(DWORD dwCertEncodingType, PCERT_NAME_INFO info,
                 types = defaultTypes;
 
             /* Remove surrounding quotes */
-            if (value->start[0] == '"')
+            if (value->start[0] == '"' && !(dwStrType & CERT_NAME_STR_NO_QUOTING_FLAG))
             {
                 value->start++;
                 value->end--;
@@ -1095,7 +1095,7 @@ BOOL WINAPI CertStrToNameW(DWORD dwCertEncodingType, LPCWSTR pszX500,
                     {
                         str = token.end;
                         ret = CRYPT_ValueToRDN(dwCertEncodingType, &info,
-                         keyOID, &token, ppszError);
+                         keyOID, &token, dwStrType, ppszError);
                     }
                 }
             }
diff --git a/dlls/crypt32/tests/str.c b/dlls/crypt32/tests/str.c
index 4d69e5c..cbfdf4d 100644
--- a/dlls/crypt32/tests/str.c
+++ b/dlls/crypt32/tests/str.c
@@ -828,7 +828,7 @@ static void test_CertStrToNameA(void)
                  "Expected ERROR_SUCCESS, got %08x\n", GetLastError());
     ret = pCertStrToNameA(X509_ASN_ENCODING, "CN=\"abc\"", CERT_NAME_STR_NO_QUOTING_FLAG, NULL, buf,
                           &size, NULL);
-    todo_wine ok(!ret && GetLastError() == ERROR_MORE_DATA,
+    ok(!ret && GetLastError() == ERROR_MORE_DATA,
                  "Expected ERROR_MORE_DATA, got %08x\n", GetLastError());
     for (i = 0; i < sizeof(namesA) / sizeof(namesA[0]); i++)
     {
-- 
1.7.5.rc1


--------------000507070706000400060006--



More information about the wine-patches mailing list