Thomas Faber : advapi32: Remove unnecessary buffer copy in CredMarshalCredentialW.

Alexandre Julliard julliard at winehq.org
Mon Mar 31 13:32:43 CDT 2014


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

Author: Thomas Faber <thomas.faber at reactos.org>
Date:   Sat Mar 29 11:08:34 2014 +0100

advapi32: Remove unnecessary buffer copy in CredMarshalCredentialW.

---

 dlls/advapi32/cred.c |   11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/dlls/advapi32/cred.c b/dlls/advapi32/cred.c
index f407c0d..2d98ecc 100644
--- a/dlls/advapi32/cred.c
+++ b/dlls/advapi32/cred.c
@@ -1952,18 +1952,13 @@ BOOL WINAPI CredMarshalCredentialW( CRED_MARSHAL_TYPE type, PVOID cred, LPWSTR *
     {
     case CertCredential:
     {
-        char hash[CERT_HASH_LENGTH + 2];
-
-        memcpy( hash, cert->rgbHashOfCert, sizeof(cert->rgbHashOfCert) );
-        memset( hash + sizeof(cert->rgbHashOfCert), 0, sizeof(hash) - sizeof(cert->rgbHashOfCert) );
-
-        size = sizeof(hash) * 4 / 3;
+        size = (sizeof(cert->rgbHashOfCert) + 2) * 4 / 3;
         if (!(p = HeapAlloc( GetProcessHeap(), 0, (size + 4) * sizeof(WCHAR) ))) return FALSE;
         p[0] = '@';
         p[1] = '@';
         p[2] = 'A' + type;
-        len = cred_encode( (const char *)hash, sizeof(hash), p + 3 );
-        p[len] = 0;
+        len = cred_encode( (const char *)cert->rgbHashOfCert, sizeof(cert->rgbHashOfCert), p + 3 );
+        p[len + 3] = 0;
         break;
     }
     case UsernameTargetCredential:




More information about the wine-cvs mailing list