summaryrefslogtreecommitdiff
path: root/source3/libads/util.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2007-09-28 18:15:34 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:31:03 -0500
commit5221ebb299081da6a806362212c6a8ceb9cc70a8 (patch)
tree40822494127c0bebd85a6db2c27115e923e91ae8 /source3/libads/util.c
parent58a9621904f0334d8f5a1f34e2dfd95409e7c68d (diff)
downloadsamba-5221ebb299081da6a806362212c6a8ceb9cc70a8.tar.gz
r25407: Revert Longhorn join patch as it is not correct for the 3.2 tree.
The translate_name() used by cli_session_setup_spnego() cann rely Winbindd since it is needed by the join process (and hence before Winbind can be run). (This used to be commit 00a93ed336c5f36643e6e33bd277608eaf05677c)
Diffstat (limited to 'source3/libads/util.c')
-rw-r--r--source3/libads/util.c54
1 files changed, 33 insertions, 21 deletions
diff --git a/source3/libads/util.c b/source3/libads/util.c
index 472fe4a2145..af96c3e10a4 100644
--- a/source3/libads/util.c
+++ b/source3/libads/util.c
@@ -55,45 +55,57 @@ failed:
ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
char **returned_principal)
{
- ADS_STATUS status;
char *princ = NULL;
- char *server = NULL;
- char *server_realm = NULL;
if (ads->server.realm && ads->server.ldap_server) {
+ char *server, *server_realm;
+
server = SMB_STRDUP(ads->server.ldap_server);
server_realm = SMB_STRDUP(ads->server.realm);
- if (!server || !server_realm) {
- status = ADS_ERROR(LDAP_NO_MEMORY);
- goto fail;
+ if (!server || !server_realm) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
+ }
+
+ strlower_m(server);
+ strupper_m(server_realm);
+ asprintf(&princ, "ldap/%s@%s", server, server_realm);
+
+ SAFE_FREE(server);
+ SAFE_FREE(server_realm);
+
+ if (!princ) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
}
} else if (ads->config.realm && ads->config.ldap_server_name) {
+ char *server, *server_realm;
+
server = SMB_STRDUP(ads->config.ldap_server_name);
server_realm = SMB_STRDUP(ads->config.realm);
- if (!server || !server_realm) {
- status = ADS_ERROR(LDAP_NO_MEMORY);
- goto fail;
- }
- }
+ if (!server || !server_realm) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
+ }
+
+ strlower_m(server);
+ strupper_m(server_realm);
+ asprintf(&princ, "ldap/%s@%s", server, server_realm);
- strlower_m(server);
- strupper_m(server_realm);
- asprintf(&princ, "ldap/%s@%s", server, server_realm);
+ SAFE_FREE(server);
+ SAFE_FREE(server_realm);
+
+ if (!princ) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
+ }
+ }
if (!princ) {
- status = ADS_ERROR(LDAP_PARAM_ERROR);
+ return ADS_ERROR(LDAP_PARAM_ERROR);
}
*returned_principal = princ;
- status = ADS_SUCCESS;
-
-fail:
- SAFE_FREE(server);
- SAFE_FREE(server_realm);
- return status;
+ return ADS_SUCCESS;
}
#endif