Paul Vriens : crypt32: Don' t crash when tracing is on and a numeric identifier is passed.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Sep 8 05:15:26 CDT 2006


Module: wine
Branch: master
Commit: 822e6af604cf0bbdc1bd00bec707823648c7f6f7
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=822e6af604cf0bbdc1bd00bec707823648c7f6f7

Author: Paul Vriens <Paul.Vriens at xs4all.nl>
Date:   Thu Sep  7 15:08:14 2006 +0200

crypt32: Don't crash when tracing is on and a numeric identifier is passed.

---

 dlls/crypt32/oid.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/dlls/crypt32/oid.c b/dlls/crypt32/oid.c
index c88d85f..ca4d40f 100644
--- a/dlls/crypt32/oid.c
+++ b/dlls/crypt32/oid.c
@@ -440,8 +440,8 @@ BOOL WINAPI CryptRegisterOIDFunction(DWO
     HKEY hKey;
     LPSTR szKey;
 
-    TRACE("(%lx, %s, %s, %s, %s)\n", dwEncodingType, pszFuncName, pszOID,
-     debugstr_w(pwszDll), pszOverrideFuncName);
+    TRACE("(%lx, %s, %s, %s, %s)\n", dwEncodingType, pszFuncName,
+     debugstr_a(pszOID), debugstr_w(pwszDll), pszOverrideFuncName);
 
     /* This only registers functions for encoding certs, not messages */
     if (!GET_CERT_ENCODING_TYPE(dwEncodingType))
@@ -470,25 +470,28 @@ BOOL WINAPI CryptRegisterOIDFunction(DWO
     r = RegCreateKeyA(HKEY_LOCAL_MACHINE, szKey, &hKey);
     CryptMemFree(szKey);
 
-    /* Testing on native shows that registry errors are reported */
-    if(r != ERROR_SUCCESS)
-    {
-        SetLastError(r);
-        return FALSE;
-    }
+    if (r != ERROR_SUCCESS) goto error_close_key;
 
     /* write the values */
     if (pszOverrideFuncName)
     {
         r = RegSetValueExA(hKey, "FuncName", 0, REG_SZ,
              (const BYTE*)pszOverrideFuncName, lstrlenA(pszOverrideFuncName) + 1);
-        if (r != ERROR_SUCCESS) SetLastError(r);
+        if (r != ERROR_SUCCESS) goto error_close_key;
     }
     r = RegSetValueExW(hKey, DllW, 0, REG_SZ, (const BYTE*) pwszDll,
          (lstrlenW(pwszDll) + 1) * sizeof (WCHAR));
-    if (r != ERROR_SUCCESS) SetLastError(r);
+
+error_close_key:
 
     RegCloseKey(hKey);
+
+    if (r != ERROR_SUCCESS) 
+    {
+        SetLastError(r);
+        return FALSE;
+    }
+
     return TRUE;
 }
 




More information about the wine-cvs mailing list