On Wed, 2012-11-14 at 16:28 +0100, Stefan Leichter wrote: > @@ -2053,6 +2053,8 @@ static BOOL cred_decode( const WCHAR *cred, unsigned > int len, char *buf ) > char c0, c1, c2, c3; > const WCHAR *p = cred; > > + TRACE("%s\n", debugstr_wn(cred,len));
This string is already traced in CredUnmarshalCredentialW. > @@ -2134,6 +2136,7 @@ BOOL WINAPI CredUnmarshalCredentialW( LPCWSTR cred, > PCRED_MARSHAL_TYPE type, PVO > case UsernameTargetCredential: > { > USERNAME_TARGET_CREDENTIAL_INFO *target; > + ULONGLONG size = 0; > > if (len < 9 || !cred_decode( cred + 3, 6, (char *)&size ) || !size > || size % sizeof(WCHAR)) > { You should also perform a sanity check on 'size' to avoid overflow in calculations that follow.