Juan Lang : crypt32: Free memory using the correct function on failure.

Alexandre Julliard julliard at winehq.org
Tue Aug 19 08:46:25 CDT 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Aug 15 16:39:09 2008 -0700

crypt32: Free memory using the correct function on failure.

---

 dlls/crypt32/encode.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index ee42a3d..0d62b02 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -1561,6 +1561,14 @@ static BOOL CRYPT_AsnEncodeUnicodeStringCoerce(const CERT_NAME_VALUE *value,
     return ret;
 }
 
+static void CRYPT_FreeSpace(PCRYPT_ENCODE_PARA pEncodePara, LPVOID pv)
+{
+    if (pEncodePara && pEncodePara->pfnFree)
+        pEncodePara->pfnFree(pv);
+    else
+        LocalFree(pv);
+}
+
 static BOOL CRYPT_AsnEncodeNumericString(const CERT_NAME_VALUE *value,
  DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded,
  DWORD *pcbEncoded)
@@ -1602,7 +1610,7 @@ static BOOL CRYPT_AsnEncodeNumericString(const CERT_NAME_VALUE *value,
                 }
             }
             if (!ret && (dwFlags & CRYPT_ENCODE_ALLOC_FLAG))
-                CryptMemFree(*(BYTE **)pbEncoded);
+                CRYPT_FreeSpace(pEncodePara, *(BYTE **)pbEncoded);
         }
     }
     return ret;
@@ -1656,7 +1664,7 @@ static BOOL CRYPT_AsnEncodePrintableString(const CERT_NAME_VALUE *value,
                 }
             }
             if (!ret && (dwFlags & CRYPT_ENCODE_ALLOC_FLAG))
-                CryptMemFree(*(BYTE **)pbEncoded);
+                CRYPT_FreeSpace(pEncodePara, *(BYTE **)pbEncoded);
         }
     }
     return ret;
@@ -1703,7 +1711,7 @@ static BOOL CRYPT_AsnEncodeIA5String(const CERT_NAME_VALUE *value,
                 }
             }
             if (!ret && (dwFlags & CRYPT_ENCODE_ALLOC_FLAG))
-                CryptMemFree(*(BYTE **)pbEncoded);
+                CRYPT_FreeSpace(pEncodePara, *(BYTE **)pbEncoded);
         }
     }
     return ret;




More information about the wine-cvs mailing list