Juan Lang : wintrust: Use helper function to allocate CRYPT_PROVIDER_DATA.

Alexandre Julliard julliard at winehq.org
Tue Sep 23 09:28:20 CDT 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep 22 13:18:16 2008 -0700

wintrust: Use helper function to allocate CRYPT_PROVIDER_DATA.

---

 dlls/wintrust/wintrust_main.c |   37 ++++++++++++++++++++++++++++---------
 1 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c
index 84bd2aa..9da584c 100644
--- a/dlls/wintrust/wintrust_main.c
+++ b/dlls/wintrust/wintrust_main.c
@@ -88,15 +88,9 @@ static DWORD WINTRUST_ExecuteSteps(const struct wintrust_step *steps,
     return err;
 }
 
-static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
- WINTRUST_DATA *data)
+static CRYPT_PROVIDER_DATA *WINTRUST_AllocateProviderData(void)
 {
-    DWORD err = ERROR_SUCCESS, numSteps = 0;
     CRYPT_PROVIDER_DATA *provData;
-    BOOL ret;
-    struct wintrust_step verifySteps[5];
-
-    TRACE("(%p, %s, %p)\n", hwnd, debugstr_guid(actionID), data);
 
     provData = WINTRUST_Alloc(sizeof(CRYPT_PROVIDER_DATA));
     if (!provData)
@@ -118,6 +112,33 @@ static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
     if (!provData->psPfns)
         goto oom;
     provData->psPfns->cbStruct = sizeof(CRYPT_PROVIDER_FUNCTIONS);
+    return provData;
+
+oom:
+    if (provData)
+    {
+        WINTRUST_Free(provData->padwTrustStepErrors);
+        WINTRUST_Free(provData->u.pPDSip);
+        WINTRUST_Free(provData->psPfns);
+        WINTRUST_Free(provData);
+    }
+    return NULL;
+}
+
+static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
+ WINTRUST_DATA *data)
+{
+    DWORD err = ERROR_SUCCESS, numSteps = 0;
+    CRYPT_PROVIDER_DATA *provData;
+    BOOL ret;
+    struct wintrust_step verifySteps[5];
+
+    TRACE("(%p, %s, %p)\n", hwnd, debugstr_guid(actionID), data);
+
+    provData = WINTRUST_AllocateProviderData();
+    if (!provData)
+        return ERROR_OUTOFMEMORY;
+
     ret = WintrustLoadFunctionPointers(actionID, provData->psPfns);
     if (!ret)
     {
@@ -162,8 +183,6 @@ static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
     err = WINTRUST_ExecuteSteps(verifySteps, numSteps, provData);
     goto done;
 
-oom:
-    err = ERROR_OUTOFMEMORY;
 error:
     if (provData)
     {




More information about the wine-cvs mailing list