ADVAPI32: preserve the last error value set by the CSP in CryptAcquireContext

Robert Shearman rob at codeweavers.com
Sat Sep 4 04:48:36 CDT 2004


Mike McCormack wrote:

>
> ChangeLog:
> * preserve the last error value set by the CSP in CryptAcquireContext
>
>------------------------------------------------------------------------
>
>Index: dlls/advapi32/crypt.c
>===================================================================
>RCS file: /home/wine/wine/dlls/advapi32/crypt.c,v
>retrieving revision 1.51
>diff -u -r1.51 crypt.c
>--- dlls/advapi32/crypt.c	30 Aug 2004 23:57:18 -0000	1.51
>+++ dlls/advapi32/crypt.c	4 Sep 2004 01:09:44 -0000
>@@ -476,6 +476,8 @@
> 	}
> 	/* FALLTHROUGH TO ERROR IF FALSE - CSP internal error! */
> error:
>+	/* must preserve the last error returned by the CSP here */
>+	r = GetLastError();
> 	if (pProv)
> 	{
> 		FreeLibrary(pProv->hModule);
>@@ -486,6 +488,7 @@
> 	CRYPT_Free(provname);
> 	CRYPT_Free(temp);
> 	CRYPT_Free(imagepath);
>+	SetLastError( r );
> 	return FALSE;
> }
> 
>
This seems wrong. Which function is calling SetLastError? I believe 
there was a problem a while ago with freeing bad pointers. I can't 
remember whether a fix went in for that.

Rob





More information about the wine-devel mailing list