[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-1219-g95129a2

Günther Deschner gd at samba.org
Wed Jan 9 09:23:19 GMT 2008


The branch, v3-2-test has been updated
       via  95129a28cfa57d8e5bd767b92f065abd1d32a569 (commit)
       via  8f411753b2130e9c1f260a15d031f57ba07b62a1 (commit)
      from  7b3724fe861408c393e94260f8a8cc504f2a48d0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 95129a28cfa57d8e5bd767b92f065abd1d32a569
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 8 18:59:57 2008 +0100

    Add libnet_join_derive_salting_principal().
    
    Guenther

commit 8f411753b2130e9c1f260a15d031f57ba07b62a1
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 8 16:57:16 2008 +0100

    Fix build warning for libsmbclient example.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 examples/libsmbclient/tree.c |    2 +
 source/libnet/libnet_join.c  |   55 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/libsmbclient/tree.c b/examples/libsmbclient/tree.c
index d5a71e2..6e34cd0 100644
--- a/examples/libsmbclient/tree.c
+++ b/examples/libsmbclient/tree.c
@@ -24,6 +24,8 @@
 
 #include <stdio.h>
 #include <errno.h>
+#include <string.h>
+#include <stdlib.h>
 #include <gtk/gtk.h>
 #include "libsmbclient.h"
 
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index 454c1f2..d139fa0 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -438,6 +438,57 @@ static bool libnet_join_create_keytab(TALLOC_CTX *mem_ctx,
 	return true;
 }
 
+#ifdef HAVE_LDAP
+
+/****************************************************************
+****************************************************************/
+
+static bool libnet_join_derive_salting_principal(TALLOC_CTX *mem_ctx,
+						 struct libnet_JoinCtx *r)
+{
+	uint32_t domain_func;
+	ADS_STATUS status;
+	const char *salt = NULL;
+	char *std_salt = NULL;
+
+	status = ads_domain_func_level(r->in.ads, &domain_func);
+	if (!ADS_ERR_OK(status)) {
+		libnet_join_set_error_string(mem_ctx, r,
+			"Failed to determine domain functional level!\n");
+		return false;
+	}
+
+	std_salt = kerberos_standard_des_salt();
+	if (!std_salt) {
+		libnet_join_set_error_string(mem_ctx, r,
+			"failed to obtain standard DES salt\n");
+		return false;
+	}
+
+	salt = talloc_strdup(mem_ctx, std_salt);
+	if (!salt) {
+		return false;
+	}
+
+	SAFE_FREE(std_salt);
+
+	if (domain_func == DS_DOMAIN_FUNCTION_2000) {
+		char *upn;
+
+		upn = ads_get_upn(r->in.ads, mem_ctx,
+				  r->in.machine_name);
+		if (upn) {
+			salt = talloc_strdup(mem_ctx, upn);
+			if (!salt) {
+				return false;
+			}
+		}
+	}
+
+	return kerberos_secrets_store_des_salt(salt);
+}
+#endif
+
 /****************************************************************
 ****************************************************************/
 
@@ -1020,6 +1071,10 @@ static WERROR libnet_DomainJoin(TALLOC_CTX *mem_ctx,
 			ads_errstr(ads_status));
 		return WERR_GENERAL_FAILURE;
 	}
+
+	if (!libnet_join_derive_salting_principal(mem_ctx, r)) {
+		return WERR_GENERAL_FAILURE;
+	}
 #endif
 	if (!libnet_join_create_keytab(mem_ctx, r)) {
 		libnet_join_set_error_string(mem_ctx, r,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list