[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