summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_netlog.c22
-rw-r--r--source3/rpc_server/srv_sid.c6
2 files changed, 16 insertions, 12 deletions
diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c
index 9fa3ed79cc..7fbd43c38e 100644
--- a/source3/rpc_server/srv_netlog.c
+++ b/source3/rpc_server/srv_netlog.c
@@ -600,6 +600,7 @@ static void api_net_sam_logon( uint16 vuid,
DOM_CRED srv_cred;
struct smb_passwd *smb_pass = NULL;
UNISTR2 *uni_samlogon_user = NULL;
+ fstring nt_username;
user_struct *vuser = NULL;
@@ -654,23 +655,23 @@ static void api_net_sam_logon( uint16 vuid,
if (status == 0)
{
- pstrcpy(samlogon_user, unistrn2(uni_samlogon_user->buffer,
- uni_samlogon_user->uni_str_len));
+ pstrcpy(nt_username, unistrn2(uni_samlogon_user->buffer,
+ uni_samlogon_user->uni_str_len));
- DEBUG(3,("User:[%s]\n", samlogon_user));
+ DEBUG(3,("User:[%s]\n", nt_username));
/*
* Convert to a UNIX username.
*/
- map_username(samlogon_user);
+ map_username(nt_username);
/*
* Do any case conversions.
*/
- (void)Get_Pwnam(samlogon_user, True);
+ (void)Get_Pwnam(nt_username, True);
become_root(True);
- smb_pass = getsmbpwnam(samlogon_user);
+ smb_pass = getsmbpwnam(nt_username);
unbecome_root(True);
if (smb_pass == NULL)
@@ -736,6 +737,7 @@ static void api_net_sam_logon( uint16 vuid,
/* XXXX hack to get standard_sub_basic() to use sam logon username */
/* possibly a better way would be to do a become_user() call */
sam_logon_in_ssb = True;
+ pstrcpy(samlogon_user, nt_username);
pstrcpy(logon_script, lp_logon_script());
pstrcpy(profile_path, lp_logon_path());
@@ -747,8 +749,10 @@ static void api_net_sam_logon( uint16 vuid,
pstrcpy(my_name, global_myname);
strupper(my_name);
- status = lookup_user_rids(samlogon_user, &r_uid, &r_gid);
- status = getusergroupsnam(samlogon_user, &grp_mem, &num_gids) ? 0 : 0xC0000000 | NT_STATUS_INVALID_PRIMARY_GROUP;
+ status = lookup_user_rids(nt_username, &r_uid, &r_gid);
+ status = getusergroupsnam(nt_username, &grp_mem, &num_gids) ? 0 : 0xC0000000 | NT_STATUS_INVALID_PRIMARY_GROUP;
+
+ sam_logon_in_ssb = False;
if (status == 0x0)
{
@@ -763,7 +767,7 @@ static void api_net_sam_logon( uint16 vuid,
&dummy_time, /* pass_can_change_time */
&dummy_time, /* pass_must_change_time */
- samlogon_user , /* user_name */
+ nt_username , /* user_name */
vuser->real_name, /* full_name */
logon_script , /* logon_script */
profile_path , /* profile_path */
diff --git a/source3/rpc_server/srv_sid.c b/source3/rpc_server/srv_sid.c
index f112b8a9ce..a428a7f068 100644
--- a/source3/rpc_server/srv_sid.c
+++ b/source3/rpc_server/srv_sid.c
@@ -443,7 +443,7 @@ BOOL map_domain_name_to_sid(DOM_SID *sid, char **nt_domain)
DEBUG(5,("map_domain_name_to_sid: overriding NULL name to %s\n",
global_sam_name));
(*nt_domain) = strdup(global_sam_name);
- *sid = global_sam_sid;
+ sid_copy(sid, &global_sam_sid);
return True;
}
@@ -453,13 +453,13 @@ BOOL map_domain_name_to_sid(DOM_SID *sid, char **nt_domain)
global_sam_name));
free(*nt_domain);
(*nt_domain) = strdup(global_sam_name);
- *sid = global_sam_sid;
+ sid_copy(sid, &global_sam_sid);
return True;
}
if (strequal((*nt_domain), global_sam_name))
{
- *sid = global_sam_sid;
+ sid_copy(sid, &global_sam_sid);
return True;
}