Juan Lang : crypt32: Fix CryptQueryObject for embedded PKCS7 signatures.

Alexandre Julliard julliard at winehq.org
Thu Sep 27 14:48:52 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Sep 27 10:00:44 2007 -0700

crypt32: Fix CryptQueryObject for embedded PKCS7 signatures.

---

 dlls/crypt32/object.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/dlls/crypt32/object.c b/dlls/crypt32/object.c
index 5dc6341..156b3df 100644
--- a/dlls/crypt32/object.c
+++ b/dlls/crypt32/object.c
@@ -365,25 +365,28 @@ static BOOL CRYPT_QueryEmbeddedMessageObject(DWORD dwObjectType,
      NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     if (file != INVALID_HANDLE_VALUE)
     {
-        CERT_BLOB blob;
+        DWORD len;
 
-        ret = ImageGetCertificateData(file, 0, NULL, &blob.cbData);
+        ret = ImageGetCertificateData(file, 0, NULL, &len);
         if (ret)
         {
-            blob.pbData = HeapAlloc(GetProcessHeap(), 0, blob.cbData);
-            if (blob.pbData)
+            WIN_CERTIFICATE *winCert = HeapAlloc(GetProcessHeap(), 0, len);
+
+            if (winCert)
             {
-                ret = ImageGetCertificateData(file, 0,
-                 (WIN_CERTIFICATE *)blob.pbData, &blob.cbData);
+                ret = ImageGetCertificateData(file, 0, winCert, &len);
                 if (ret)
                 {
+                    CERT_BLOB blob = { winCert->dwLength,
+                     winCert->bCertificate };
+
                     ret = CRYPT_QueryMessageObject(CERT_QUERY_OBJECT_BLOB,
                      &blob, CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED,
                      pdwMsgAndCertEncodingType, NULL, phCertStore, phMsg);
                     if (ret && pdwContentType)
                         *pdwContentType = CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED;
                 }
-                HeapFree(GetProcessHeap(), 0, blob.pbData);
+                HeapFree(GetProcessHeap(), 0, winCert);
             }
         }
         CloseHandle(file);




More information about the wine-cvs mailing list