int count;
int length;
char* tokens[8];
- int ret;
+ int ret = -1;
/**
* <ProtocolVersion>,<protocolType>,<machineAddressList>,<assistantAccountPwd>,
}
if (count != 8)
- return -1;
+ goto error;
count = 0;
tokens[count++] = str;
}
if (strcmp(tokens[0], "65538") != 0)
- return -1;
+ goto error;
if (strcmp(tokens[1], "1") != 0)
- return -1;
+ goto error;
if (strcmp(tokens[3], "*") != 0)
- return -1;
+ goto error;
if (strcmp(tokens[5], "*") != 0)
- return -1;
+ goto error;
if (strcmp(tokens[6], "*") != 0)
- return -1;
+ goto error;
file->RASessionId = _strdup(tokens[4]);
if (!file->RASessionId)
- return -1;
+ goto error;
file->RASpecificParams = _strdup(tokens[7]);
if (!file->RASpecificParams)
- return -1;
+ goto error;
ret = freerdp_assistance_parse_address_list(file, tokens[2]);
+error:
free(str);
if (ret != 1)
authValue = _strdup(separator + 1);
if (!authScheme || !authValue)
+ {
+ free(authScheme);
+ free(authValue);
return FALSE;
+ }
*separator = ' ';
}
BOOL ntlm_client_make_spn(rdpNtlm* ntlm, LPCTSTR ServiceClass, char* hostname)
{
+ BOOL status = FALSE;
DWORD SpnLength = 0;
LPTSTR hostnameX = NULL;
}
if (DsMakeSpn(ServiceClass, hostnameX, NULL, 0, NULL, &SpnLength, NULL) != ERROR_BUFFER_OVERFLOW)
- return FALSE;
+ goto error;
ntlm->ServicePrincipalName = (LPTSTR) malloc(SpnLength * sizeof(TCHAR));
if (!ntlm->ServicePrincipalName)
- return FALSE;
+ goto error;
if (DsMakeSpn(ServiceClass, hostnameX, NULL, 0, NULL, &SpnLength, ntlm->ServicePrincipalName) != ERROR_SUCCESS)
- return FALSE;
+ goto error;
+ status = TRUE;
+
+error:
free(hostnameX);
- return TRUE;
+ return status;
}
/**
ServicePrincipalName = (LPTSTR) malloc(SpnLength * sizeof(TCHAR));
if (!ServicePrincipalName)
+ {
+ free(ServiceClassX);
+ free(hostnameX);
return NULL;
+ }
status = DsMakeSpn(ServiceClassX, hostnameX, NULL, 0, NULL, &SpnLength, ServicePrincipalName);
return PAM_CONV_ERR;
if (x11_shadow_pam_get_service_name(info) < 0)
+ {
+ free(info);
return -1;
+ }
info->appdata.user = user;
info->appdata.domain = domain;
p = strchr(p + 1, ',');
if (!p)
+ {
+ free(str);
return -1;
+ }
*p++ = '\0';
tok[1] = p;
p = strchr(p + 1, ',');
if (!p)
+ {
+ free(str);
return -1;
+ }
*p++ = '\0';
tok[2] = p;
p = strchr(p + 1, ',');
if (!p)
+ {
+ free(str);
return -1;
+ }
*p++ = '\0';
tok[3] = p;
y = atoi(tok[1]);
w = atoi(tok[2]);
h = atoi(tok[3]);
+ free(str);
if ((x < 0) || (y < 0) || (w < 1) || (h < 1))
return -1;
friendlyNameA = _strdup(nameWinSCard);
if (!friendlyNameA)
+ {
+ free(namePCSC);
return SCARD_E_NO_MEMORY;
+ }
}
else
{
free(friendlyNameA);
if (!friendlyNameW)
+ {
+ free(namePCSC);
return SCARD_E_NO_MEMORY;
+ }
if (cbAttrLen == SCARD_AUTOALLOCATE)
{
if ((length * 2) > cbAttrLen)
{
free(friendlyNameW);
+ free(namePCSC);
return SCARD_E_INSUFFICIENT_BUFFER;
}
else
if ((length + 1) > cbAttrLen)
{
free(friendlyNameA);
+ free(namePCSC);
return SCARD_E_INSUFFICIENT_BUFFER;
}
else
* 2 ... TIME_ZONE_ID_DAYLIGHT */
return local_time->tm_isdst ? 2 : 1;
}
- else
- {
- /* could not detect timezone, use computed bias from tm_gmtoff */
- WLog_DBG(TAG, "tz not found, using computed bias %d.", tz->Bias);
+
+ /* could not detect timezone, use computed bias from tm_gmtoff */
+ WLog_DBG(TAG, "tz not found, using computed bias %d.", tz->Bias);
out_error:
- memcpy(tz->StandardName, L"Client Local Time", sizeof(tz->StandardName));
- memcpy(tz->DaylightName, L"Client Local Time", sizeof(tz->DaylightName));
- return 0; /* TIME_ZONE_ID_UNKNOWN */
- }
+ free(dtz);
+ memcpy(tz->StandardName, L"Client Local Time", sizeof(tz->StandardName));
+ memcpy(tz->DaylightName, L"Client Local Time", sizeof(tz->DaylightName));
+ return 0; /* TIME_ZONE_ID_UNKNOWN */
}
BOOL SetTimeZoneInformation(const TIME_ZONE_INFORMATION* lpTimeZoneInformation)
BYTE* NTOWFv1W(LPWSTR Password, UINT32 PasswordLength, BYTE* NtHash)
{
+ BOOL allocate = !NtHash;
WINPR_MD4_CTX md4;
if (!Password)
return NULL;
- if (!NtHash && !(NtHash = malloc(16)))
- return NULL;
-
if (!winpr_MD4_Init(&md4))
return NULL;
if (!winpr_MD4_Update(&md4, (BYTE*) Password, (size_t) PasswordLength))
return NULL;
+ if (!NtHash && !(NtHash = malloc(WINPR_MD4_DIGEST_LENGTH)))
+ return NULL;
if (!winpr_MD4_Final(&md4, NtHash, WINPR_MD4_DIGEST_LENGTH))
+ {
+ if (allocate)
+ free(NtHash);
return NULL;
+ }
return NtHash;
}