[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Thu Jul 28 21:34:02 MDT 2011


The branch, master has been updated
       via  2663586 s4-auth Fill in the remainder of the unix info in auth_session_info
       via  f5963aa s4-auth Move conversion of security_token to unix_token to auth
       via  e84b8a7 gensec: Add a way to request a unix token from GENSEC
       via  d2a6ae2 ntvfs: Use security_unix_token from auth.idl
       via  8f13c84 s3-selftest Add tests for 'map to guest = bad user'
       via  2b47afa selftest: Avoid being run over by armies of the undead
       via  b782b5e nbt: Add comment explaining that these responses are manually encoded
       via  61cb215 selftest: explain how the message command test works
       via  ee20a27 s4-lsa Use the supplied handle in LsaLookupNames2
       via  481f1e6 s4-debug: Start with DEBUG_DEFAULT_STDOUT, so we can log to a file in deamons
      from  fcb90f4 s3-printing: Add forward declaration for dcerpc_binding_handle.

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


- Log -----------------------------------------------------------------
commit 2663586c8bbda96822c9325de2966382a2341fca
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jul 21 18:21:19 2011 +1000

    s4-auth Fill in the remainder of the unix info in auth_session_info
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>
    
    Autobuild-User: Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date: Fri Jul 29 05:33:03 CEST 2011 on sn-devel-104

commit f5963aad18de80e837448cbc29feb52081897667
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jul 21 17:06:17 2011 +1000

    s4-auth Move conversion of security_token to unix_token to auth
    
    This allows us to honour the AUTH_SESSION_INFO_UNIX_TOKEN flag.
    
    Andrew Bartlett
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit e84b8a72bd63d3f4af810536068ae65d33aabff8
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jul 21 15:39:27 2011 +1000

    gensec: Add a way to request a unix token from GENSEC
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit d2a6ae254a7c6afd2c58d1a9a2c9fd4c074b0afb
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jul 21 15:37:41 2011 +1000

    ntvfs: Use security_unix_token from auth.idl
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit 8f13c84dcecb769e4ba85fa120d9ac4ac772223e
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Fri Jul 22 13:00:21 2011 +1000

    s3-selftest Add tests for 'map to guest = bad user'
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit 2b47aface434000b29aa29f4ff6348cc147ae757
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Tue Jul 26 17:04:40 2011 +1000

    selftest: Avoid being run over by armies of the undead
    
    Ignore SIGCHILD to reap zombies
    
    Andrew Bartlett
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit b782b5ed7c7a59fc60845c776c81cfcc56fdfda6
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Jul 27 12:06:22 2011 +1000

    nbt: Add comment explaining that these responses are manually encoded
    
    Signed-off-by: Andrew Tridgell <tridge at samba.org>

commit 61cb2150cbd6922600964a70920ca90da9eb4368
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Wed Jul 27 15:42:45 2011 +1000

    selftest: explain how the message command test works

commit ee20a27d411c4f3c1d97e9c9bdbb7226f144c2f1
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Thu Jul 28 07:55:09 2011 +1000

    s4-lsa Use the supplied handle in LsaLookupNames2
    
    In my rework of this function in 2006 with
    459a2301a5d63f5a1a6b27996c8a0358b20f2ab2 I ignored the incoming
    handle, instead feching the LSA state again (dispite the commit
    message indicating otherwise).
    
    This means that data->access_mask is uninitialised, which doesn't
    matter right now, but will once we start checking that.
    
    Andrew Bartlett

commit 481f1e601daafd186c504476f7efa1b557099105
Author: Andrew Bartlett <abartlet at samba.org>
Date:   Fri Jul 29 12:10:39 2011 +1000

    s4-debug: Start with DEBUG_DEFAULT_STDOUT, so we can log to a file in deamons
    
    In commit 3c9d01e3e58e2217915317406541ac8c6f6dcf92 I changed the priority order
    and added DEBUG_DEFAULT_STDOUT, but did not check all the callers.
    
    Andrew Bartlett

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

Summary of changes:
 librpc/idl/nbt.idl                        |    6 +-
 selftest/selftest.pl                      |    2 +
 selftest/target/Samba3.pm                 |   34 ++++++++
 source3/script/tests/test_smbclient_s3.sh |    1 +
 source3/selftest/tests.py                 |    5 +-
 source4/auth/auth.h                       |    3 +
 source4/auth/gensec/gensec.c              |   17 +++-
 source4/auth/gensec/gensec.h              |    1 +
 source4/auth/ntlm/auth.c                  |   31 ++++++-
 source4/auth/ntlm/wscript_build           |    2 +-
 source4/auth/session.c                    |    2 +-
 source4/auth/unix_token.c                 |  129 +++++++++++++++++++++++++++++
 source4/auth/wscript_build                |    6 ++
 source4/lib/cmdline/popt_common.c         |    2 +-
 source4/ntvfs/unixuid/vfs_unixuid.c       |   94 ++++-----------------
 source4/ntvfs/unixuid/wscript_build       |    2 +-
 source4/rpc_server/lsa/lsa_lookup.c       |   10 +-
 17 files changed, 250 insertions(+), 97 deletions(-)
 create mode 100644 source4/auth/unix_token.c


Changeset truncated at 500 lines:

diff --git a/librpc/idl/nbt.idl b/librpc/idl/nbt.idl
index ee9a64e..5d8dfd7 100644
--- a/librpc/idl/nbt.idl
+++ b/librpc/idl/nbt.idl
@@ -545,7 +545,11 @@ interface nbt
 		[case(NETLOGON_ANNOUNCE_UAS)] NETLOGON_DB_CHANGE uas;
 	} nbt_netlogon_request;
 
-#if 0
+#if 0 
+	/* These responses are all handled manually, as they cannot be encoded in IDL fully
+	   
+	   See push_nbt_netlogon_response()
+	*/
 		[case(NETLOGON_RESPONSE_FROM_PDC)] nbt_netlogon_response_from_pdc response;
 		[case(NETLOGON_RESPONSE_FROM_PDC_USER)] nbt_netlogon_response_from_pdc2 response2;
 
diff --git a/selftest/selftest.pl b/selftest/selftest.pl
index 78627c8..5cbb686 100755
--- a/selftest/selftest.pl
+++ b/selftest/selftest.pl
@@ -176,6 +176,8 @@ sub pipe_handler {
 
 $SIG{PIPE} = \&pipe_handler;
 
+$SIG{CHILD} = 'IGNORE';
+
 sub find_in_list($$)
 {
 	my ($list, $fullname) = @_;
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index c78c1d6..93b999f 100644
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -95,6 +95,8 @@ sub setup_env($$$)
 		return $self->setup_s3dc("$path/s3dc");
 	} elsif ($envname eq "secshare") {
 		return $self->setup_secshare("$path/secshare");
+	} elsif ($envname eq "maptoguest") {
+		return $self->setup_maptoguest("$path/maptoguest");
 	} elsif ($envname eq "ktest") {
 		return $self->setup_ktest("$path/ktest");
 	} elsif ($envname eq "secserver") {
@@ -472,6 +474,36 @@ $ret->{USERNAME} = KTEST\\Administrator
 	return $ret;
 }
 
+sub setup_maptoguest($$)
+{
+	my ($self, $path) = @_;
+
+	print "PROVISIONING maptoguest...";
+
+	my $options = "
+map to guest = bad user
+";
+
+	my $vars = $self->provision($path,
+				    "maptoguest",
+				    7,
+				    "maptoguestpass",
+				    $options);
+
+	$vars or return undef;
+
+	$self->check_or_start($vars,
+			       "yes", "no", "yes");
+
+	if (not $self->wait_for_start($vars)) {
+	       return undef;
+	}
+
+	$self->{vars}->{s3maptoguest} = $vars;
+
+	return $vars;
+}
+
 sub stop_sig_term($$) {
 	my ($self, $pid) = @_;
 	kill("USR1", $pid) or kill("ALRM", $pid) or warn("Unable to kill $pid: $!");
@@ -872,6 +904,8 @@ sub provision($$$$$$$)
 
         resolv:host file = $dns_host_file
 
+        # The samba3.blackbox.smbclient_s3 test uses this to test that
+        # sending messages works, and that the %m sub works.
         message command = mv %s $shrdir/message.%m
 
 	# Begin extra options
diff --git a/source3/script/tests/test_smbclient_s3.sh b/source3/script/tests/test_smbclient_s3.sh
index fa721cb..05bc8ef 100755
--- a/source3/script/tests/test_smbclient_s3.sh
+++ b/source3/script/tests/test_smbclient_s3.sh
@@ -260,6 +260,7 @@ EOF
 	return
     fi
 
+    # The server writes this into a file message.msgtest, via message.%m to test the % sub code
     cmd='$SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/tmpguest -p 139 $ADDARGS -c "get message.msgtest $PREFIX/message_out.$$" 2>&1'
     eval echo "$cmd"
     out=`eval $cmd`
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 0b0da7f..b6fb166 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -108,9 +108,12 @@ for env in ["secserver"]:
 for env in ["member"]:
     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) member creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$SERVER\\\\$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration])
 
-for env in ["secshare", "secserver"]:
+for env in ["maptoguest", "secshare", "secserver"]:
     plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
 
+env = "maptoguest"
+plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) bad username" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', 'notmy$USERNAME', '$PASSWORD', binpath('smbclient3'), configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"])
+
 # plain
 for env in ["s3dc"]:
     plantestsuite("samba3.blackbox.smbclient_s3.plain (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$DC_USERNAME', '$DC_PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', binpath('smbclient3'), configuration])
diff --git a/source4/auth/auth.h b/source4/auth/auth.h
index 04731af..ac2327d 100644
--- a/source4/auth/auth.h
+++ b/source4/auth/auth.h
@@ -48,6 +48,7 @@ struct loadparm_context;
 #define AUTH_SESSION_INFO_DEFAULT_GROUPS     0x01 /* Add the user to the default world and network groups */
 #define AUTH_SESSION_INFO_AUTHENTICATED      0x02 /* Add the user to the 'authenticated users' group */
 #define AUTH_SESSION_INFO_SIMPLE_PRIVILEGES  0x04 /* Use a trivial map between users and privilages, rather than a DB */
+#define AUTH_SESSION_INFO_UNIX_TOKEN         0x08 /* The returned token must have the unix_token and unix_info elements provided */
 
 struct auth_method_context;
 struct auth_check_password_request;
@@ -156,7 +157,9 @@ struct auth_critical_sizes {
 			   const struct auth_usersupplied_info *user_info_in,
 			   const struct auth_usersupplied_info **user_info_encrypted);
 
+struct wbc_context;
 #include "auth/session.h"
+#include "auth/unix_token_proto.h"
 #include "auth/system_session_proto.h"
 #include "libcli/security/security.h"
 
diff --git a/source4/auth/gensec/gensec.c b/source4/auth/gensec/gensec.c
index 7e6a83d..7dd3eac 100644
--- a/source4/auth/gensec/gensec.c
+++ b/source4/auth/gensec/gensec.c
@@ -1320,21 +1320,28 @@ NTSTATUS gensec_generate_session_info(TALLOC_CTX *mem_ctx,
 				      struct auth_session_info **session_info)
 {
 	NTSTATUS nt_status;
-	uint32_t flags = AUTH_SESSION_INFO_DEFAULT_GROUPS;
+	uint32_t session_info_flags = 0;
+
+	if (gensec_security->want_features & GENSEC_FEATURE_UNIX_TOKEN) {
+		session_info_flags |= AUTH_SESSION_INFO_UNIX_TOKEN;
+	}
+
+	session_info_flags |= AUTH_SESSION_INFO_DEFAULT_GROUPS;
 	if (user_info_dc->info->authenticated) {
-		flags |= AUTH_SESSION_INFO_AUTHENTICATED;
+		session_info_flags |= AUTH_SESSION_INFO_AUTHENTICATED;
 	}
+
 	if (gensec_security->auth_context) {
 		nt_status = gensec_security->auth_context->generate_session_info(mem_ctx, gensec_security->auth_context,
 										 user_info_dc,
-										 flags,
+										 session_info_flags,
 										 session_info);
 	} else {
-		flags |= AUTH_SESSION_INFO_SIMPLE_PRIVILEGES;
+		session_info_flags |= AUTH_SESSION_INFO_SIMPLE_PRIVILEGES;
 		nt_status = auth_generate_session_info(mem_ctx,
 						       NULL,
 						       NULL,
-						       user_info_dc, flags,
+						       user_info_dc, session_info_flags,
 						       session_info);
 	}
 	return nt_status;
diff --git a/source4/auth/gensec/gensec.h b/source4/auth/gensec/gensec.h
index e42b4aa..322adce 100644
--- a/source4/auth/gensec/gensec.h
+++ b/source4/auth/gensec/gensec.h
@@ -59,6 +59,7 @@ struct gensec_target {
 #define GENSEC_FEATURE_DATAGRAM_MODE	0x00000020
 #define GENSEC_FEATURE_SIGN_PKT_HEADER	0x00000040
 #define GENSEC_FEATURE_NEW_SPNEGO	0x00000080
+#define GENSEC_FEATURE_UNIX_TOKEN	0x00000100
 
 /* GENSEC mode */
 enum gensec_role
diff --git a/source4/auth/ntlm/auth.c b/source4/auth/ntlm/auth.c
index d2464c3..74e97cf 100644
--- a/source4/auth/ntlm/auth.c
+++ b/source4/auth/ntlm/auth.c
@@ -26,7 +26,7 @@
 #include "auth/ntlm/auth_proto.h"
 #include "param/param.h"
 #include "dsdb/samdb/samdb.h"
-
+#include "libcli/wbclient/wbclient.h"
 
 /***************************************************************************
  Set a fixed challenge
@@ -407,16 +407,37 @@ _PUBLIC_ NTSTATUS auth_check_password_recv(struct tevent_req *req,
 }
 
 /* Wrapper because we don't want to expose all callers to needing to
- * know that session_info is generated from the main ldb */
+ * know that session_info is generated from the main ldb, and because
+ * we need to break a depenency loop between the DCE/RPC layer and the
+ * generation of unix tokens via IRPC */
 static NTSTATUS auth_generate_session_info_wrapper(TALLOC_CTX *mem_ctx,
 						   struct auth4_context *auth_context,
 						   struct auth_user_info_dc *user_info_dc,
 						   uint32_t session_info_flags,
 						   struct auth_session_info **session_info)
 {
-	return auth_generate_session_info(mem_ctx, auth_context->lp_ctx,
-					  auth_context->sam_ctx, user_info_dc,
-					  session_info_flags, session_info);
+	NTSTATUS status = auth_generate_session_info(mem_ctx, auth_context->lp_ctx,
+						     auth_context->sam_ctx, user_info_dc,
+						     session_info_flags, session_info);
+
+	if ((session_info_flags & AUTH_SESSION_INFO_UNIX_TOKEN)
+	    && NT_STATUS_IS_OK(status)) {
+		struct wbc_context *wbc_ctx = wbc_init(auth_context,
+						       auth_context->msg_ctx,
+						       auth_context->event_ctx);
+		if (!wbc_ctx) {
+			TALLOC_FREE(*session_info);
+			DEBUG(1, ("Cannot contact winbind to provide unix token\n"));
+			return NT_STATUS_INVALID_SERVER_STATE;
+		}
+		status = auth_session_info_fill_unix(wbc_ctx, auth_context->lp_ctx,
+						     *session_info);
+		if (!NT_STATUS_IS_OK(status)) {
+			TALLOC_FREE(*session_info);
+		}
+		TALLOC_FREE(wbc_ctx);
+	}
+	return status;
 }
 
 /***************************************************************************
diff --git a/source4/auth/ntlm/wscript_build b/source4/auth/ntlm/wscript_build
index d954ec0..29e54fd 100644
--- a/source4/auth/ntlm/wscript_build
+++ b/source4/auth/ntlm/wscript_build
@@ -51,7 +51,7 @@ bld.SAMBA_MODULE('auth4_unix',
 bld.SAMBA_LIBRARY('auth4',
 	source='auth.c auth_util.c auth_simple.c',
 	autoproto='auth_proto.h',
-	deps='samba-util security samdb credentials UTIL_TEVENT',
+	deps='samba-util security samdb credentials UTIL_TEVENT LIBWBCLIENT_OLD auth_unix_token',
 	private_library=True
 	)
 
diff --git a/source4/auth/session.c b/source4/auth/session.c
index 7a4dc54..805659c 100644
--- a/source4/auth/session.c
+++ b/source4/auth/session.c
@@ -32,6 +32,7 @@
 #include "auth/session_proto.h"
 #include "system/kerberos.h"
 #include <gssapi/gssapi.h>
+#include "libcli/wbclient/wbclient.h"
 
 _PUBLIC_ struct auth_session_info *anonymous_session(TALLOC_CTX *mem_ctx, 
 					    struct loadparm_context *lp_ctx)
@@ -335,4 +336,3 @@ void auth_session_info_debug(int dbg_lev,
 
 	security_token_debug(0, dbg_lev, session_info->security_token);
 }
-
diff --git a/source4/auth/unix_token.c b/source4/auth/unix_token.c
new file mode 100644
index 0000000..b7657aa
--- /dev/null
+++ b/source4/auth/unix_token.c
@@ -0,0 +1,129 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Deal with unix elements in the security token
+
+   Copyright (C) Andrew Tridgell 2004
+   Copyright (C) Andrew Bartlett 2011
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "auth/auth.h"
+#include "libcli/wbclient/wbclient.h"
+#include "param/param.h"
+
+/*
+  form a security_unix_token from the current security_token
+*/
+NTSTATUS security_token_to_unix_token(TALLOC_CTX *mem_ctx,
+				      struct wbc_context *wbc_ctx,
+				      struct security_token *token,
+				      struct security_unix_token **sec)
+{
+	int i;
+	NTSTATUS status;
+	struct id_map *ids;
+	struct composite_context *ctx;
+	*sec = talloc(mem_ctx, struct security_unix_token);
+
+	/* we can't do unix security without a user and group */
+	if (token->num_sids < 2) {
+		return NT_STATUS_ACCESS_DENIED;
+	}
+
+	ids = talloc_array(mem_ctx, struct id_map, token->num_sids);
+	NT_STATUS_HAVE_NO_MEMORY(ids);
+
+	(*sec)->ngroups = token->num_sids - 2;
+	(*sec)->groups = talloc_array(*sec, gid_t, (*sec)->ngroups);
+	NT_STATUS_HAVE_NO_MEMORY((*sec)->groups);
+
+	for (i=0;i<token->num_sids;i++) {
+		ZERO_STRUCT(ids[i].xid);
+		ids[i].sid = &token->sids[i];
+		ids[i].status = ID_UNKNOWN;
+	}
+
+	ctx = wbc_sids_to_xids_send(wbc_ctx, ids, token->num_sids, ids);
+	NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+	status = wbc_sids_to_xids_recv(ctx, &ids);
+	NT_STATUS_NOT_OK_RETURN(status);
+
+	if (ids[0].xid.type == ID_TYPE_BOTH ||
+	    ids[0].xid.type == ID_TYPE_UID) {
+		(*sec)->uid = ids[0].xid.id;
+	} else {
+		return NT_STATUS_INVALID_SID;
+	}
+
+	if (ids[1].xid.type == ID_TYPE_BOTH ||
+	    ids[1].xid.type == ID_TYPE_GID) {
+		(*sec)->gid = ids[1].xid.id;
+	} else {
+		return NT_STATUS_INVALID_SID;
+	}
+
+	for (i=0;i<(*sec)->ngroups;i++) {
+		if (ids[i+2].xid.type == ID_TYPE_BOTH ||
+		    ids[i+2].xid.type == ID_TYPE_GID) {
+			(*sec)->groups[i] = ids[i+2].xid.id;
+		} else {
+			return NT_STATUS_INVALID_SID;
+		}
+	}
+
+	TALLOC_FREE(ids);
+
+	return NT_STATUS_OK;
+}
+
+/*
+  Fill in the auth_user_info_unix and auth_unix_token elements in a struct session_info
+*/
+NTSTATUS auth_session_info_fill_unix( struct wbc_context *wbc_ctx,
+				     struct loadparm_context *lp_ctx,
+				     struct auth_session_info *session_info)
+{
+	char *su;
+	size_t len;
+	NTSTATUS status = security_token_to_unix_token(session_info, wbc_ctx,
+						       session_info->security_token,
+						       &session_info->unix_token);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	session_info->unix_info = talloc_zero(session_info, struct auth_user_info_unix);
+	NT_STATUS_HAVE_NO_MEMORY(session_info->unix_info);
+
+	session_info->unix_info->system = security_token_is_system(session_info->security_token);
+
+	session_info->unix_info->unix_name = talloc_asprintf(session_info->unix_info,
+							     "%s%s%s", session_info->info->domain_name,
+							     lpcfg_winbind_separator(lp_ctx),
+							     session_info->info->account_name);
+	NT_STATUS_HAVE_NO_MEMORY(session_info->unix_info->unix_name);
+
+	len = strlen(session_info->info->account_name) + 1;
+	session_info->unix_info->sanitized_username = su = talloc_array(session_info->unix_info, char, len);
+	NT_STATUS_HAVE_NO_MEMORY(su);
+
+	alpha_strcpy(su, session_info->info->account_name,
+		     ". _-$", len);
+
+	return NT_STATUS_OK;
+}
diff --git a/source4/auth/wscript_build b/source4/auth/wscript_build
index d72086e..f7535c4 100644
--- a/source4/auth/wscript_build
+++ b/source4/auth/wscript_build
@@ -15,6 +15,12 @@ bld.SAMBA_SUBSYSTEM('auth_session',
 	deps='samdb auth4_sam'
 	)
 
+bld.SAMBA_SUBSYSTEM('auth_unix_token',
+	source='unix_token.c',
+	autoproto='unix_token_proto.h',
+	public_deps='LIBWBCLIENT_OLD',
+	)
+
 
 bld.SAMBA_SUBSYSTEM('samba_server_gensec',
 	source='samba_server_gensec.c',
diff --git a/source4/lib/cmdline/popt_common.c b/source4/lib/cmdline/popt_common.c
index af1e900..25b02b4 100644
--- a/source4/lib/cmdline/popt_common.c
+++ b/source4/lib/cmdline/popt_common.c
@@ -88,7 +88,7 @@ static void popt_samba_callback(poptContext con,
 		fault_setup();
 
 		/* and logging */
-		setup_logging(pname, DEBUG_STDOUT);
+		setup_logging(pname, DEBUG_DEFAULT_STDOUT);
 		talloc_set_log_fn(popt_s4_talloc_log_fn);
 		talloc_set_abort_fn(smb_panic);
 
diff --git a/source4/ntvfs/unixuid/vfs_unixuid.c b/source4/ntvfs/unixuid/vfs_unixuid.c
index a8a4a98..0221b43 100644
--- a/source4/ntvfs/unixuid/vfs_unixuid.c
+++ b/source4/ntvfs/unixuid/vfs_unixuid.c
@@ -43,25 +43,17 @@ NTSTATUS ntvfs_unixuid_init(void);
 
 struct unixuid_private {
 	struct wbc_context *wbc_ctx;
-	struct unix_sec_ctx *last_sec_ctx;
+	struct security_unix_token *last_sec_ctx;
 	struct security_token *last_token;
 };
 
 
-
-struct unix_sec_ctx {
-	uid_t uid;
-	gid_t gid;
-	unsigned int ngroups;
-	gid_t *groups;
-};
-
 /*
-  pull the current security context into a unix_sec_ctx
+  pull the current security context into a security_unix_token
 */
-static struct unix_sec_ctx *save_unix_security(TALLOC_CTX *mem_ctx)
+static struct security_unix_token *save_unix_security(TALLOC_CTX *mem_ctx)
 {
-	struct unix_sec_ctx *sec = talloc(mem_ctx, struct unix_sec_ctx);
+	struct security_unix_token *sec = talloc(mem_ctx, struct security_unix_token);
 	if (sec == NULL) {
 		return NULL;
 	}
@@ -87,9 +79,9 @@ static struct unix_sec_ctx *save_unix_security(TALLOC_CTX *mem_ctx)
 }
 
 /*
-  set the current security context from a unix_sec_ctx
+  set the current security context from a security_unix_token
 */
-static NTSTATUS set_unix_security(struct unix_sec_ctx *sec)
+static NTSTATUS set_unix_security(struct security_unix_token *sec)
 {
 	seteuid(0);
 
@@ -118,7 +110,7 @@ static int unixuid_event_nesting_hook(struct tevent_context *ev,
 				      void *stack_ptr,
 				      const char *location)
 {
-	struct unix_sec_ctx *sec_ctx;
+	struct security_unix_token *sec_ctx;
 
 	if (unixuid_nesting_level == 0) {
 		/* we don't need to do anything unless we are nested
@@ -132,7 +124,7 @@ static int unixuid_event_nesting_hook(struct tevent_context *ev,
 			DEBUG(0,("%s: Failed to save security context\n", location));
 			return -1;
 		}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list