#ifdef HAVE_LDAP
ads_disconnect(*ads);
#endif
- SAFE_FREE((*ads)->server.workgroup);
SAFE_FREE((*ads)->server.ldap_server);
SAFE_FREE((*ads)->auth.realm);
return NULL;
}
- ads->server.workgroup = workgroup ? SMB_STRDUP(workgroup) : NULL;
+ ads->server.workgroup = talloc_strdup(ads, workgroup);
+ if (workgroup != NULL && ads->server.workgroup == NULL) {
+ DBG_WARNING("Out of memory\n");
+ TALLOC_FREE(ads);
+ return NULL;
+ }
+
ads->server.ldap_server = ldap_server? SMB_STRDUP(ldap_server) : NULL;
wrap_flags = lp_client_ldap_sasl_wrapping();
SAFE_FREE(ads->config.ldap_server_name);
SAFE_FREE(ads->config.server_site_name);
SAFE_FREE(ads->config.client_site_name);
- SAFE_FREE(ads->server.workgroup);
+ TALLOC_FREE(ads->server.workgroup);
if (!check_cldap_reply_required_flags(cldap_reply.server_type,
ads->config.flags)) {
ads->config.client_site_name =
SMB_STRDUP(cldap_reply.client_site);
}
- ads->server.workgroup = SMB_STRDUP(cldap_reply.domain_name);
+
+ ads->server.workgroup = talloc_strdup(ads, cldap_reply.domain_name);
+ if (ads->server.workgroup == NULL) {
+ DBG_WARNING("Out of memory\n");
+ ret = false;
+ goto out;
+ }
ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT;
ads->ldap.ss = *ss;