From c9b2f20efcb9cd2e93f29928442e9a61360fa5a0 Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Wed, 25 Nov 1998 14:54:23 +0000 Subject: fixing domain join and domain login problems (This used to be commit 90a24664318da97a6e8cfe4622a8573c0e3cbe5e) --- source3/passdb/smbpassgroupunix.c | 1 - source3/rpc_server/srv_netlog.c | 6 +----- source3/rpc_server/srv_sid.c | 19 +++++++++++++++++++ source3/smbd/server.c | 2 +- source3/utils/rpctorture.c | 6 ++---- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/source3/passdb/smbpassgroupunix.c b/source3/passdb/smbpassgroupunix.c index 0e621cb3cc..d83196415c 100644 --- a/source3/passdb/smbpassgroupunix.c +++ b/source3/passdb/smbpassgroupunix.c @@ -126,7 +126,6 @@ static struct smb_passwd *getsmbunixgrpent(void *vp, { DOM_SID sid; char *unix_grpname; - uint32 status; uint32 rid; /* diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c index 77b17dca2f..9fa3ed79cc 100644 --- a/source3/rpc_server/srv_netlog.c +++ b/source3/rpc_server/srv_netlog.c @@ -748,7 +748,7 @@ static void api_net_sam_logon( uint16 vuid, strupper(my_name); status = lookup_user_rids(samlogon_user, &r_uid, &r_gid); - status = status == 0 ? getusergroupsnam(samlogon_user, &grp_mem, &num_gids) : 0xC0000000 | NT_STATUS_INVALID_PRIMARY_GROUP; + status = getusergroupsnam(samlogon_user, &grp_mem, &num_gids) ? 0 : 0xC0000000 | NT_STATUS_INVALID_PRIMARY_GROUP; if (status == 0x0) { @@ -787,10 +787,6 @@ static void api_net_sam_logon( uint16 vuid, &global_sam_sid, /* DOM_SID *dom_sid */ NULL); /* char *other_sids */ } - else - { - status = 0xC0000000 | NT_STATUS_NO_SUCH_USER; - } /* Free any allocated groups array. */ if (gids) diff --git a/source3/rpc_server/srv_sid.c b/source3/rpc_server/srv_sid.c index a8a94204c1..216fab657f 100644 --- a/source3/rpc_server/srv_sid.c +++ b/source3/rpc_server/srv_sid.c @@ -162,6 +162,25 @@ BOOL get_member_domain_sid(void) fstring dom3; fstring dom5; + switch (lp_server_role()) + { + case ROLE_DOMAIN_NONE: + { + ZERO_STRUCT(global_member_sid); + return True; + } + case ROLE_DOMAIN_PDC: + { + sid_copy(&global_member_sid, &global_sam_sid); + return True; + } + default: + { + /* member or BDC, we're going for connection to PDC */ + break; + } + } + if (!cli_connect_serverlist(&cli, lp_passwordserver())) { DEBUG(0,("get_member_domain_sid: unable to initialise client connection.\n")); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index e064b52dfa..acde9eebf3 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -663,7 +663,7 @@ static void usage(char *pname) exit(1); } - if (lp_security() == SEC_DOMAIN && !get_member_domain_sid()) + if (!get_member_domain_sid()) { DEBUG(0,("ERROR: Samba cannot obtain PDC SID from PDC(s) %s.\n", lp_passwordserver())); diff --git a/source3/utils/rpctorture.c b/source3/utils/rpctorture.c index dac64a22e3..3b2a497ad4 100644 --- a/source3/utils/rpctorture.c +++ b/source3/utils/rpctorture.c @@ -558,9 +558,7 @@ static void run_handles(int numops, struct client_info *cli_info) static void run_pipegobbler(int numops, struct client_info *cli_info) { -/* run_pipegobble(numops, cli_info, PIPE_SAMR); -*/ run_pipegobble(numops, cli_info, PIPE_LSARPC); } @@ -954,9 +952,9 @@ enum client_action } */ - create_procs(nprocs, numops, &cli_info, run_tcpconnect); -/* create_procs(nprocs, numops, &cli_info, run_pipegobbler); +/* + create_procs(nprocs, numops, &cli_info, run_tcpconnect); create_procs(nprocs, numops, &cli_info, run_handles); create_procs(nprocs, numops, &cli_info, run_randomrpc); */ -- cgit