[PATCH 04/16] [Crypt32]: string functions
Eric Pouech
eric.pouech at wanadoo.fr
Sun Oct 22 14:48:11 CDT 2006
- fix CertStrToNameA when pszX500 is NULL
A+
---
dlls/crypt32/str.c | 34 ++++++++++++++++++----------------
1 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/dlls/crypt32/str.c b/dlls/crypt32/str.c
index e74fc7d..e1dc31f 100644
--- a/dlls/crypt32/str.c
+++ b/dlls/crypt32/str.c
@@ -427,32 +427,34 @@ BOOL WINAPI CertStrToNameA(DWORD dwCertE
LPCSTR *ppszError)
{
LPWSTR x500, errorStr;
- BOOL ret;
+ BOOL ret = FALSE;
int len;
TRACE("(%08x, %s, %08x, %p, %p, %p, %p)\n", dwCertEncodingType,
debugstr_a(pszX500), dwStrType, pvReserved, pbEncoded, pcbEncoded,
ppszError);
- len = MultiByteToWideChar(CP_ACP, 0, pszX500, -1, NULL, 0);
- x500 = CryptMemAlloc(len * sizeof(WCHAR));
- if (x500)
+ if (pszX500)
{
+ len = MultiByteToWideChar(CP_ACP, 0, pszX500, -1, NULL, 0);
+ x500 = CryptMemAlloc(len * sizeof(WCHAR));
+ if (!x500) goto done;
MultiByteToWideChar(CP_ACP, 0, pszX500, -1, x500, len);
- ret = CertStrToNameW(dwCertEncodingType, x500, dwStrType, pvReserved,
- pbEncoded, pcbEncoded, ppszError ? (LPCWSTR *)&errorStr : NULL);
- if (ppszError)
- {
- DWORD i;
+ }
+ else x500 = NULL;
+ ret = CertStrToNameW(dwCertEncodingType, x500, dwStrType, pvReserved,
+ pbEncoded, pcbEncoded, ppszError ? (LPCWSTR *)&errorStr : NULL);
+ if (ppszError)
+ {
+ DWORD i;
- *ppszError = pszX500;
- for (i = 0; i < errorStr - x500; i++)
- CharNextA(*ppszError);
- }
- CryptMemFree(x500);
+ *ppszError = pszX500;
+ for (i = 0; i < errorStr - x500; i++)
+ CharNextA(*ppszError);
}
- else
- ret = FALSE;
+ CryptMemFree(x500);
+ ret = TRUE;
+done:
return ret;
}
More information about the wine-patches
mailing list