[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-31-ga83feb2

Stefan Metzmacher metze at samba.org
Wed Jan 21 12:49:21 GMT 2009


The branch, master has been updated
       via  a83feb2fe3e00241c340cdcab5674a250a1858ce (commit)
       via  bc42f251c3c0a2fd33e4b8487410f61392f8dcc3 (commit)
       via  6f6533aa81791d40b37a9e715c7b7669cc92a1c9 (commit)
       via  ccffe1ca71392f8d4f62b8ca64f9eafe42505808 (commit)
       via  5a18607a3b9450b6fdb3bd19a3762d3fb5388b7c (commit)
       via  ac364b4bab0f0b48eb3cf46cd174ecf2bd6f60e3 (commit)
       via  74471512745d22fc997184dd27977fdf6410ac46 (commit)
      from  37412017c5dd2f05a7f4bbe0410a6e00ce4805e5 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a83feb2fe3e00241c340cdcab5674a250a1858ce
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:43:15 2009 +0100

    s4:auth: move make_server_info_netlogon_validation() function arround
    
    metze

commit bc42f251c3c0a2fd33e4b8487410f61392f8dcc3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:15:22 2009 +0100

    merged-build: propare to fix make test4
    
    metze

commit 6f6533aa81791d40b37a9e715c7b7669cc92a1c9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:14:29 2009 +0100

    selftest: add --exeext parameter
    
    metze

commit ccffe1ca71392f8d4f62b8ca64f9eafe42505808
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:12:04 2009 +0100

    s4:selftest: reference binaries via variables in tests.sh
    
    metze

commit 5a18607a3b9450b6fdb3bd19a3762d3fb5388b7c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:09:30 2009 +0100

    selftest:Samba4: add bindir_path() utility function to construct the binary pathes
    
    metze

commit ac364b4bab0f0b48eb3cf46cd174ecf2bd6f60e3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 10:05:53 2009 +0100

    selftest: bin/ is under $(builddir) instead of $(srcdir)
    
    metze

commit 74471512745d22fc997184dd27977fdf6410ac46
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Jan 21 13:34:11 2009 +0100

    s4:python glue: fix dependecy to pyldb
    
    metze

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

Summary of changes:
 selftest/selftest.pl               |   14 +++-
 selftest/target/Samba4.pm          |   43 +++++++----
 source3/samba4.mk                  |    5 +-
 source4/auth/auth_sam_reply.c      |  139 +++++++++++++++++++++++++++++++++++
 source4/auth/gensec/gensec_krb5.c  |    2 +-
 source4/auth/ntlm/auth_winbind.c   |    2 +-
 source4/auth/session.c             |  140 ------------------------------------
 source4/auth/session.h             |    5 --
 source4/scripting/python/config.mk |    2 +-
 source4/selftest/tests.sh          |   16 +++--
 source4/smbd/service_named_pipe.c  |    1 +
 source4/torture/auth/pac.c         |    2 +-
 12 files changed, 196 insertions(+), 175 deletions(-)


Changeset truncated at 500 lines:

diff --git a/selftest/selftest.pl b/selftest/selftest.pl
index 292a2d2..6f0883c 100755
--- a/selftest/selftest.pl
+++ b/selftest/selftest.pl
@@ -13,7 +13,7 @@ selftest - Samba test runner
 
 selftest --help
 
-selftest [--srcdir=DIR] [--builddir=DIR] [--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--immediate] [--testlist=FILE] [TESTS]
+selftest [--srcdir=DIR] [--builddir=DIR] [--exeext=EXT][--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--immediate] [--testlist=FILE] [TESTS]
 
 =head1 DESCRIPTION
 
@@ -35,6 +35,10 @@ Source directory.
 
 Build directory.
 
+=item I<--exeext=EXT>
+
+Executable extention
+
 =item I<--prefix=DIR>
 
 Change directory to run tests in. Default is 'st'.
@@ -156,6 +160,7 @@ my @testlists = ();
 
 my $srcdir = ".";
 my $builddir = ".";
+my $exeext = "";
 my $prefix = "./st";
 
 my @expected_failures = ();
@@ -294,6 +299,7 @@ Paths:
  --prefix=DIR               prefix to run tests in [st]
  --srcdir=DIR               source directory [.]
  --builddir=DIR             output directory [.]
+ --exeext=EXT               executable extention []
 
 Target Specific:
  --socket-wrapper-pcap	    save traffic to pcap directories
@@ -334,6 +340,7 @@ my $result = GetOptions (
 		'include=s' => \@opt_include,
 		'srcdir=s' => \$srcdir,
 		'builddir=s' => \$builddir,
+		'exeext=s' => \$exeext,
 		'verbose' => \$opt_verbose,
 		'testenv' => \$opt_testenv,
 		'ldap:s' => \$ldap,
@@ -443,9 +450,10 @@ my $testenv_default = "none";
 if ($opt_target eq "samba4") {
 	$testenv_default = "member";
 	require target::Samba4;
-	$target = new Samba4($opt_bindir or "$srcdir/bin", $ldap, "$srcdir/setup");
+	$target = new Samba4($opt_bindir or "$builddir/bin",
+			     $ldap, "$srcdir/setup", $exeext);
 } elsif ($opt_target eq "samba3") {
-	my $bindir = ($opt_bindir or "$srcdir/bin");
+	my $bindir = ($opt_bindir or "$builddir/bin");
 	if ($opt_socket_wrapper and `$bindir/smbd -b | grep SOCKET_WRAPPER` eq "") {
 		die("You must include --enable-socket-wrapper when compiling Samba in order to execute 'make test'.  Exiting....");
 	}
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index 1dfb67e..83f62d4 100644
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -10,18 +10,26 @@ use Cwd qw(abs_path);
 use FindBin qw($RealBin);
 use POSIX;
 
-sub new($$$$) {
-	my ($classname, $bindir, $ldap, $setupdir) = @_;
+sub new($$$$$) {
+	my ($classname, $bindir, $ldap, $setupdir, $exeext) = @_;
+	$exeext = "" unless defined($exeext);
 	my $self = { 
 		vars => {}, 
 		ldap => $ldap, 
 		bindir => $bindir, 
-		setupdir => $setupdir 
+		setupdir => $setupdir,
+		exeext => $exeext
 	};
 	bless $self;
 	return $self;
 }
 
+sub bindir_path($$) {
+	my ($self, $path) = @_;
+
+	return "$self->{bindir}/$path$self->{exeext}";
+}
+
 sub openldap_start($$$) {
         my ($slapd_conf, $uri, $logs) = @_;
   	my $oldpath = $ENV{PATH};
@@ -50,7 +58,8 @@ sub slapd_start($$)
 	} elsif ($self->{ldap} eq "openldap") {
 	        openldap_start($env_vars->{SLAPD_CONF}, $uri, "$env_vars->{LDAPDIR}/logs");
 	}
-	while (system("$self->{bindir}/ldbsearch -H $uri -s base -b \"\" supportedLDAPVersion > /dev/null") != 0) {
+	my $ldbsearch = $self->bindir_path("ldbsearch");
+	while (system("$ldbsearch -H $uri -s base -b \"\" supportedLDAPVersion > /dev/null") != 0) {
 	        $count++;
 		if ($count > 40) {
 		    $self->slapd_stop($env_vars);
@@ -116,20 +125,21 @@ sub check_or_start($$$)
 		if (defined($ENV{SMBD_OPTIONS})) {
 			$optarg.= " $ENV{SMBD_OPTIONS}";
 		}
-		my $ret = system("$valgrind $self->{bindir}/samba $optarg $env_vars->{CONFIGURATION} -M single -i --leak-report-full");
+		my $samba = $self->bindir_path("samba");
+		my $ret = system("$valgrind $samba $optarg $env_vars->{CONFIGURATION} -M single -i --leak-report-full");
 		if ($? == -1) {
-			print "Unable to start samba: $ret: $!\n";
+			print "Unable to start $samba: $ret: $!\n";
 			exit 1;
 		}
 		unlink($env_vars->{SMBD_TEST_FIFO});
 		my $exit = $? >> 8;
 		if ( $ret == 0 ) {
-			print "samba exits with status $exit\n";
+			print "$samba exits with status $exit\n";
 		} elsif ( $ret & 127 ) {
-			print "samba got signal ".($ret & 127)." and exits with $exit!\n";
+			print "$samba got signal ".($ret & 127)." and exits with $exit!\n";
 		} else {
 			$ret = $? >> 8;
-			print "samba failed with status $exit!\n";
+			print "$samba failed with status $exit!\n";
 		}
 		exit $exit;
 	}
@@ -169,7 +179,8 @@ sub write_ldb_file($$$)
 {
 	my ($self, $file, $ldif) = @_;
 
-	open(LDIF, "|$self->{bindir}/ldbadd -H $file >/dev/null");
+	my $ldbadd = $self->bindir_path("ldbadd");
+	open(LDIF, "|$ldbadd -H $file >/dev/null");
 	print LDIF $ldif;
 	return close(LDIF);
 }
@@ -690,12 +701,13 @@ nogroup:x:65534:nobody
 	close(GRP);
 
 #Ensure the config file is valid before we start
-	if (system("$self->{bindir}/testparm $configuration -v --suppress-prompt >/dev/null 2>&1") != 0) {
-		system("$self->{bindir}/testparm -v --suppress-prompt $configuration >&2");
-		die("Failed to create a valid smb.conf configuration!");
+	my $testparm = $self->bindir_path("testparm");
+	if (system("$testparm $configuration -v --suppress-prompt >/dev/null 2>&1") != 0) {
+		system("$testparm -v --suppress-prompt $configuration >&2");
+		die("Failed to create a valid smb.conf configuration $testparm!");
 	}
 
-	(system("($self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global 2> /dev/null | grep -i \"^$netbiosname\" ) >/dev/null 2>&1") == 0) or die("Failed to create a valid smb.conf configuration! $self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global");
+	(system("($testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global 2> /dev/null | grep -i \"^$netbiosname\" ) >/dev/null 2>&1") == 0) or die("Failed to create a valid smb.conf configuration! $self->{bindir}/testparm $configuration -v --suppress-prompt --parameter-name=\"netbios name\" --section-name=global");
 
 	my @provision_options = ();
 	push (@provision_options, "NSS_WRAPPER_PASSWD=\"$nsswrap_passwd\"");
@@ -792,10 +804,11 @@ sub provision_member($$$)
 
 	$ret or die("Unable to provision");
 
+	my $net = $self->bindir_path("net");
 	my $cmd = "";
 	$cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
 	$cmd .= "KRB5_CONFIG=\"$ret->{KRB5_CONFIG}\" ";
-	$cmd .= "$self->{bindir}/net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member";
+	$cmd .= "$net join $ret->{CONFIGURATION} $dcvars->{DOMAIN} member";
 	$cmd .= " -U$dcvars->{USERNAME}\%$dcvars->{PASSWORD}";
 
 	system($cmd) == 0 or die("Join failed\n$cmd");
diff --git a/source3/samba4.mk b/source3/samba4.mk
index c79694e..49afa3a 100644
--- a/source3/samba4.mk
+++ b/source3/samba4.mk
@@ -170,8 +170,11 @@ everything:: $(patsubst %,%4,$(BINARIES))
 setup:
 	@ln -sf ../source4/setup setup
 
-SELFTEST4 = $(LD_LIBPATH_OVERRIDE) $(PERL) $(selftestdir)/selftest.pl --prefix=st4 \
+LD_LIBPATH_OVERRIDE = $(LIB_PATH_VAR)="$(builddir)/bin/shared"
+
+SELFTEST4 = $(LD_LIBPATH_OVERRIDE) EXEEXT="4" $(PERL) $(selftestdir)/selftest.pl --prefix=st4 \
     --builddir=$(builddir) --srcdir=$(samba4srcdir) \
+    --exeext=4 \
     --expected-failures=$(samba4srcdir)/selftest/knownfail \
 	--format=$(SELFTEST_FORMAT) \
     --exclude=$(samba4srcdir)/selftest/skip --testlist="$(samba4srcdir)/selftest/tests.sh|" \
diff --git a/source4/auth/auth_sam_reply.c b/source4/auth/auth_sam_reply.c
index 8395536..dfa7623 100644
--- a/source4/auth/auth_sam_reply.c
+++ b/source4/auth/auth_sam_reply.c
@@ -147,3 +147,142 @@ NTSTATUS auth_convert_server_info_saminfo3(TALLOC_CTX *mem_ctx,
 	return NT_STATUS_OK;
 }	
 
+/**
+ * Make a server_info struct from the info3 returned by a domain logon 
+ */
+NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
+					      const char *account_name,
+					      uint16_t validation_level,
+					      union netr_Validation *validation,
+					      struct auth_serversupplied_info **_server_info)
+{
+	struct auth_serversupplied_info *server_info;
+	struct netr_SamBaseInfo *base = NULL;
+	int i;
+
+	switch (validation_level) {
+	case 2:
+		if (!validation || !validation->sam2) {
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+		base = &validation->sam2->base;
+		break;
+	case 3:
+		if (!validation || !validation->sam3) {
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+		base = &validation->sam3->base;
+		break;
+	case 6:
+		if (!validation || !validation->sam6) {
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+		base = &validation->sam6->base;
+		break;
+	default:
+		return NT_STATUS_INVALID_LEVEL;
+	}
+
+	server_info = talloc(mem_ctx, struct auth_serversupplied_info);
+	NT_STATUS_HAVE_NO_MEMORY(server_info);
+
+	/*
+	   Here is where we should check the list of
+	   trusted domains, and verify that the SID 
+	   matches.
+	*/
+	server_info->account_sid = dom_sid_add_rid(server_info, base->domain_sid, base->rid);
+	NT_STATUS_HAVE_NO_MEMORY(server_info->account_sid);
+
+
+	server_info->primary_group_sid = dom_sid_add_rid(server_info, base->domain_sid, base->primary_gid);
+	NT_STATUS_HAVE_NO_MEMORY(server_info->primary_group_sid);
+
+	server_info->n_domain_groups = base->groups.count;
+	if (base->groups.count) {
+		server_info->domain_groups = talloc_array(server_info, struct dom_sid*, base->groups.count);
+		NT_STATUS_HAVE_NO_MEMORY(server_info->domain_groups);
+	} else {
+		server_info->domain_groups = NULL;
+	}
+
+	for (i = 0; i < base->groups.count; i++) {
+		server_info->domain_groups[i] = dom_sid_add_rid(server_info, base->domain_sid, base->groups.rids[i].rid);
+		NT_STATUS_HAVE_NO_MEMORY(server_info->domain_groups[i]);
+	}
+
+	/* Copy 'other' sids.  We need to do sid filtering here to
+ 	   prevent possible elevation of privileges.  See:
+
+           http://www.microsoft.com/windows2000/techinfo/administration/security/sidfilter.asp
+         */
+
+	if (validation_level == 3) {
+		struct dom_sid **dgrps = server_info->domain_groups;
+		size_t sidcount = server_info->n_domain_groups + validation->sam3->sidcount;
+		size_t n_dgrps = server_info->n_domain_groups;
+
+		if (validation->sam3->sidcount > 0) {
+			dgrps = talloc_realloc(server_info, dgrps, struct dom_sid*, sidcount);
+			NT_STATUS_HAVE_NO_MEMORY(dgrps);
+
+			for (i = 0; i < validation->sam3->sidcount; i++) {
+				dgrps[n_dgrps + i] = talloc_reference(dgrps, validation->sam3->sids[i].sid);
+			}
+		}
+
+		server_info->n_domain_groups = sidcount;
+		server_info->domain_groups = dgrps;
+
+		/* Where are the 'global' sids?... */
+	}
+
+	if (base->account_name.string) {
+		server_info->account_name = talloc_reference(server_info, base->account_name.string);
+	} else {
+		server_info->account_name = talloc_strdup(server_info, account_name);
+		NT_STATUS_HAVE_NO_MEMORY(server_info->account_name);
+	}
+
+	server_info->domain_name = talloc_reference(server_info, base->domain.string);
+	server_info->full_name = talloc_reference(server_info, base->full_name.string);
+	server_info->logon_script = talloc_reference(server_info, base->logon_script.string);
+	server_info->profile_path = talloc_reference(server_info, base->profile_path.string);
+	server_info->home_directory = talloc_reference(server_info, base->home_directory.string);
+	server_info->home_drive = talloc_reference(server_info, base->home_drive.string);
+	server_info->logon_server = talloc_reference(server_info, base->logon_server.string);
+	server_info->last_logon = base->last_logon;
+	server_info->last_logoff = base->last_logoff;
+	server_info->acct_expiry = base->acct_expiry;
+	server_info->last_password_change = base->last_password_change;
+	server_info->allow_password_change = base->allow_password_change;
+	server_info->force_password_change = base->force_password_change;
+	server_info->logon_count = base->logon_count;
+	server_info->bad_password_count = base->bad_password_count;
+	server_info->acct_flags = base->acct_flags;
+
+	server_info->authenticated = true;
+
+	/* ensure we are never given NULL session keys */
+
+	if (all_zero(base->key.key, sizeof(base->key.key))) {
+		server_info->user_session_key = data_blob(NULL, 0);
+	} else {
+		server_info->user_session_key = data_blob_talloc(server_info, base->key.key, sizeof(base->key.key));
+		NT_STATUS_HAVE_NO_MEMORY(server_info->user_session_key.data);
+	}
+
+	if (all_zero(base->LMSessKey.key, sizeof(base->LMSessKey.key))) {
+		server_info->lm_session_key = data_blob(NULL, 0);
+	} else {
+		server_info->lm_session_key = data_blob_talloc(server_info, base->LMSessKey.key, sizeof(base->LMSessKey.key));
+		NT_STATUS_HAVE_NO_MEMORY(server_info->lm_session_key.data);
+	}
+
+	ZERO_STRUCT(server_info->pac_srv_sig);
+	ZERO_STRUCT(server_info->pac_kdc_sig);
+
+	*_server_info = server_info;
+	return NT_STATUS_OK;
+}
+
diff --git a/source4/auth/gensec/gensec_krb5.c b/source4/auth/gensec/gensec_krb5.c
index 1686736..6c6b928 100644
--- a/source4/auth/gensec/gensec_krb5.c
+++ b/source4/auth/gensec/gensec_krb5.c
@@ -30,7 +30,6 @@
 #include "auth/auth.h"
 #include "lib/ldb/include/ldb.h"
 #include "auth/auth_sam.h"
-#include "system/network.h"
 #include "lib/socket/socket.h"
 #include "librpc/rpc/dcerpc.h"
 #include "auth/credentials/credentials.h"
@@ -39,6 +38,7 @@
 #include "auth/gensec/gensec_proto.h"
 #include "param/param.h"
 #include "auth/session_proto.h"
+#include "auth/auth_sam_reply.h"
 
 enum GENSEC_KRB5_STATE {
 	GENSEC_KRB5_SERVER_START,
diff --git a/source4/auth/ntlm/auth_winbind.c b/source4/auth/ntlm/auth_winbind.c
index ac63b24..bf75ad9 100644
--- a/source4/auth/ntlm/auth_winbind.c
+++ b/source4/auth/ntlm/auth_winbind.c
@@ -24,7 +24,7 @@
 #include "includes.h"
 #include "auth/auth.h"
 #include "auth/ntlm/auth_proto.h"
-#include "auth/session_proto.h"
+#include "auth/auth_sam_reply.h"
 #include "nsswitch/winbind_client.h"
 #include "librpc/gen_ndr/ndr_netlogon.h"
 #include "librpc/gen_ndr/ndr_winbind.h"
diff --git a/source4/auth/session.c b/source4/auth/session.c
index 885b2b9..ef5646f 100644
--- a/source4/auth/session.c
+++ b/source4/auth/session.c
@@ -201,143 +201,3 @@ void auth_session_info_debug(int dbg_lev,
 	security_token_debug(dbg_lev, session_info->security_token);
 }
 
-/**
- * Make a server_info struct from the info3 returned by a domain logon 
- */
-_PUBLIC_ NTSTATUS make_server_info_netlogon_validation(TALLOC_CTX *mem_ctx,
-					      const char *account_name,
-					      uint16_t validation_level,
-					      union netr_Validation *validation,
-					      struct auth_serversupplied_info **_server_info)
-{
-	struct auth_serversupplied_info *server_info;
-	struct netr_SamBaseInfo *base = NULL;
-	int i;
-
-	switch (validation_level) {
-	case 2:
-		if (!validation || !validation->sam2) {
-			return NT_STATUS_INVALID_PARAMETER;
-		}
-		base = &validation->sam2->base;
-		break;
-	case 3:
-		if (!validation || !validation->sam3) {
-			return NT_STATUS_INVALID_PARAMETER;
-		}
-		base = &validation->sam3->base;
-		break;
-	case 6:
-		if (!validation || !validation->sam6) {
-			return NT_STATUS_INVALID_PARAMETER;
-		}
-		base = &validation->sam6->base;
-		break;
-	default:
-		return NT_STATUS_INVALID_LEVEL;
-	}
-
-	server_info = talloc(mem_ctx, struct auth_serversupplied_info);
-	NT_STATUS_HAVE_NO_MEMORY(server_info);
-
-	/*
-	   Here is where we should check the list of
-	   trusted domains, and verify that the SID 
-	   matches.
-	*/
-	server_info->account_sid = dom_sid_add_rid(server_info, base->domain_sid, base->rid);
-	NT_STATUS_HAVE_NO_MEMORY(server_info->account_sid);
-
-
-	server_info->primary_group_sid = dom_sid_add_rid(server_info, base->domain_sid, base->primary_gid);
-	NT_STATUS_HAVE_NO_MEMORY(server_info->primary_group_sid);
-
-	server_info->n_domain_groups = base->groups.count;
-	if (base->groups.count) {
-		server_info->domain_groups = talloc_array(server_info, struct dom_sid*, base->groups.count);
-		NT_STATUS_HAVE_NO_MEMORY(server_info->domain_groups);
-	} else {
-		server_info->domain_groups = NULL;
-	}
-
-	for (i = 0; i < base->groups.count; i++) {
-		server_info->domain_groups[i] = dom_sid_add_rid(server_info, base->domain_sid, base->groups.rids[i].rid);
-		NT_STATUS_HAVE_NO_MEMORY(server_info->domain_groups[i]);
-	}
-
-	/* Copy 'other' sids.  We need to do sid filtering here to
- 	   prevent possible elevation of privileges.  See:
-
-           http://www.microsoft.com/windows2000/techinfo/administration/security/sidfilter.asp
-         */
-
-	if (validation_level == 3) {
-		struct dom_sid **dgrps = server_info->domain_groups;
-		size_t sidcount = server_info->n_domain_groups + validation->sam3->sidcount;
-		size_t n_dgrps = server_info->n_domain_groups;
-
-		if (validation->sam3->sidcount > 0) {
-			dgrps = talloc_realloc(server_info, dgrps, struct dom_sid*, sidcount);
-			NT_STATUS_HAVE_NO_MEMORY(dgrps);
-
-			for (i = 0; i < validation->sam3->sidcount; i++) {
-				dgrps[n_dgrps + i] = talloc_reference(dgrps, validation->sam3->sids[i].sid);
-			}
-		}
-
-		server_info->n_domain_groups = sidcount;
-		server_info->domain_groups = dgrps;
-
-		/* Where are the 'global' sids?... */
-	}
-
-	if (base->account_name.string) {
-		server_info->account_name = talloc_reference(server_info, base->account_name.string);
-	} else {
-		server_info->account_name = talloc_strdup(server_info, account_name);
-		NT_STATUS_HAVE_NO_MEMORY(server_info->account_name);
-	}
-
-	server_info->domain_name = talloc_reference(server_info, base->domain.string);
-	server_info->full_name = talloc_reference(server_info, base->full_name.string);
-	server_info->logon_script = talloc_reference(server_info, base->logon_script.string);
-	server_info->profile_path = talloc_reference(server_info, base->profile_path.string);
-	server_info->home_directory = talloc_reference(server_info, base->home_directory.string);
-	server_info->home_drive = talloc_reference(server_info, base->home_drive.string);
-	server_info->logon_server = talloc_reference(server_info, base->logon_server.string);
-	server_info->last_logon = base->last_logon;
-	server_info->last_logoff = base->last_logoff;
-	server_info->acct_expiry = base->acct_expiry;
-	server_info->last_password_change = base->last_password_change;
-	server_info->allow_password_change = base->allow_password_change;
-	server_info->force_password_change = base->force_password_change;
-	server_info->logon_count = base->logon_count;
-	server_info->bad_password_count = base->bad_password_count;
-	server_info->acct_flags = base->acct_flags;
-
-	server_info->authenticated = true;
-
-	/* ensure we are never given NULL session keys */
-
-	if (all_zero(base->key.key, sizeof(base->key.key))) {
-		server_info->user_session_key = data_blob(NULL, 0);
-	} else {
-		server_info->user_session_key = data_blob_talloc(server_info, base->key.key, sizeof(base->key.key));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list