const char *user_name,
const char *password,
const char *ccname,
+ TALLOC_CTX *mem_ctx,
ADS_STRUCT **ads)
{
+ TALLOC_CTX *tmp_ctx = talloc_stackframe();
ADS_STATUS status;
ADS_STRUCT *my_ads = NULL;
char *cp;
dc_name,
ADS_SASL_SEAL);
if (!my_ads) {
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ goto out;
}
/* In FIPS mode, client use kerberos is forced to required. */
my_ads->auth.realm = smb_xstrdup(cp);
if (!strupper_m(my_ads->auth.realm)) {
ads_destroy(&my_ads);
- return ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ status = ADS_ERROR_LDAP(LDAP_NO_MEMORY);
+ goto out;
}
}
}
status = ads_connect_user_creds(my_ads);
if (!ADS_ERR_OK(status)) {
ads_destroy(&my_ads);
- return status;
+ goto out;
}
*ads = my_ads;
- return ADS_SUCCESS;
+
+ status = ADS_SUCCESS;
+out:
+ TALLOC_FREE(tmp_ctx);
+ return status;
}
/****************************************************************
username,
password,
ccname,
+ mem_ctx,
&r->in.ads);
if (!ADS_ERR_OK(status)) {
libnet_join_set_error_string(mem_ctx, r,
r->in.admin_account,
r->in.admin_password,
NULL,
+ mem_ctx,
&r->in.ads);
if (!ADS_ERR_OK(status)) {
libnet_unjoin_set_error_string(mem_ctx, r,