crypt32: correct CryptAcquireContext initialization

Kees Cook kees at outflux.net
Fri May 20 17:27:54 CDT 2005


This will fix the crypt32 protectdata.c test runs when a user hasn't had
a new context created before.

ChangeLog:
	Correct crypt context init in CryptProtectData/CryptUnprotectData.

-- 
Kees Cook                                            @outflux.net
-------------- next part --------------
Index: dlls/crypt32/protectdata.c
===================================================================
RCS file: /home/wine/wine/dlls/crypt32/protectdata.c,v
retrieving revision 1.4
diff -u -p -r1.4 protectdata.c
--- dlls/crypt32/protectdata.c	20 May 2005 19:23:48 -0000	1.4
+++ dlls/crypt32/protectdata.c	20 May 2005 22:23:42 -0000
@@ -861,7 +861,8 @@ BOOL WINAPI CryptProtectData(DATA_BLOB* 
         szDataDescr=(WCHAR[]){'\0'};
 
     /* get crypt context */
-    if (!CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,0))
+    if (!CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,0) &&
+        !CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,CRYPT_NEWKEYSET))
     {
         ERR("CryptAcquireContextW failed\n");
         goto finished;
@@ -1042,7 +1043,8 @@ BOOL WINAPI CryptUnprotectData(DATA_BLOB
     }
 
     /* get a crypt context */
-    if (!CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,0))
+    if (!CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,0) &&
+        !CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,CRYPT_NEWKEYSET))
     {
         ERR("CryptAcquireContextW failed\n");
         goto free_protect_data;


More information about the wine-patches mailing list