diff options
Diffstat (limited to 'src/modules/netlib/netlibsecurity.cpp')
| -rw-r--r-- | src/modules/netlib/netlibsecurity.cpp | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/src/modules/netlib/netlibsecurity.cpp b/src/modules/netlib/netlibsecurity.cpp index 395d7f8dd1..eb96625a01 100644 --- a/src/modules/netlib/netlibsecurity.cpp +++ b/src/modules/netlib/netlibsecurity.cpp @@ -411,7 +411,7 @@ char* NtlmCreateResponseFromChallenge(HANDLE hSecurity, const char *szChallenge,  		return NULL;
  	if (!http)
 -		return mir_strdup(szOutputToken);
 +		return szOutputToken;
  	ptrA szProvider( mir_t2a(hNtlm->szProvider));
  	size_t resLen = strlen(szOutputToken) + strlen(szProvider) + 10;
 @@ -432,7 +432,8 @@ static INT_PTR InitSecurityProviderService(WPARAM, LPARAM lParam)  static INT_PTR InitSecurityProviderService2(WPARAM, LPARAM lParam)
  {
  	NETLIBNTLMINIT2 *req = (NETLIBNTLMINIT2*)lParam;
 -	if (req->cbSize < sizeof(*req)) return 0;
 +	if (req == NULL || req->cbSize < sizeof(*req))
 +		return 0;
  	HANDLE hSecurity;
 @@ -452,10 +453,13 @@ static INT_PTR DestroySecurityProviderService(WPARAM, LPARAM lParam)  static INT_PTR NtlmCreateResponseService(WPARAM wParam, LPARAM lParam)
  {
 -	NETLIBNTLMREQUEST* req = (NETLIBNTLMREQUEST*)lParam;
 -	unsigned complete;
 +	NETLIBNTLMREQUEST *req = (NETLIBNTLMREQUEST*)lParam;
 +	if (req == NULL)
 +		return 0;
 -	char* response = NtlmCreateResponseFromChallenge((HANDLE)wParam, req->szChallenge,
 +	unsigned complete = 0;
 +
 +	char *response = NtlmCreateResponseFromChallenge((HANDLE)wParam, req->szChallenge,
  		StrConvT(req->userName), StrConvT(req->password), false, complete);
  	return (INT_PTR)response;
 @@ -463,8 +467,9 @@ static INT_PTR NtlmCreateResponseService(WPARAM wParam, LPARAM lParam)  static INT_PTR NtlmCreateResponseService2(WPARAM wParam, LPARAM lParam)
  {
 -	NETLIBNTLMREQUEST2* req = (NETLIBNTLMREQUEST2*)lParam;
 -	if (req->cbSize < sizeof(*req)) return 0;
 +	NETLIBNTLMREQUEST2 *req = (NETLIBNTLMREQUEST2*)lParam;
 +	if (req == NULL || req->cbSize < sizeof(*req))
 +		return 0;
  	char* response;
  | 
