static SECURITY_STATUS nla_encrypt_ts_credentials(rdpNla* nla);
static SECURITY_STATUS nla_decrypt_ts_credentials(rdpNla* nla);
static BOOL nla_read_ts_password_creds(rdpNla* nla, wStream* s);
+static void nla_identity_free(SEC_WINNT_AUTH_IDENTITY* identity);
#define ber_sizeof_sequence_octet_string(length) ber_sizeof_contextual_tag(ber_sizeof_octet_string(length)) + ber_sizeof_octet_string(length)
#define ber_write_sequence_octet_string(stream, context, value, length) ber_write_contextual_tag(stream, context, ber_sizeof_octet_string(length), TRUE) + ber_write_octet_string(stream, value, length)
+void nla_identity_free(SEC_WINNT_AUTH_IDENTITY* identity)
+{
+ if (identity)
+ {
+ free(identity->User);
+ free(identity->Domain);
+ free(identity->Password);
+ }
+ free(identity);
+
+}
+
/**
* Initialize NTLMSSP authentication module (client).
* @param credssp
if (!settings->Username)
{
- free (nla->identity);
+ nla_identity_free(nla->identity);
nla->identity = NULL;
}
else
sspi_SecBufferFree(&nla->tsCredentials);
free(nla->ServicePrincipalName);
- if (nla->identity)
- {
- free(nla->identity->User);
- free(nla->identity->Domain);
- free(nla->identity->Password);
- }
- free(nla->identity);
-
+ nla_identity_free(nla->identity);
free(nla);
}
/* verify certificate name match */
certificate_data = crypto_get_certificate_data(cert->px509, hostname, port);
+
/* extra common name and alternative names */
common_name = crypto_cert_subject_common_name(cert->px509, &common_name_length);
alt_names = crypto_cert_subject_alt_name(cert->px509, &alt_names_count, &alt_names_lengths);
free(fingerprint);
}
- if (certificate_data)
- {
- free(certificate_data->fingerprint);
- free(certificate_data->hostname);
- free(certificate_data);
- }
+ certificate_data_free(certificate_data);
#ifndef _WIN32
free(common_name);