107-srv_samr_nt.c.diff [plain text]
--- samba/source/rpc_server/srv_samr_nt.c.orig Fri Aug 29 14:15:04 2003
+++ samba/source/rpc_server/srv_samr_nt.c Fri Aug 29 14:40:41 2003
@@ -2240,7 +2240,7 @@ NTSTATUS _samr_create_user(pipes_struct
return NT_STATUS_USER_EXISTS;
}
- pdb_free_sam(&sam_pass);
+ /* pdb_free_sam(&sam_pass); */
/*
* NB. VERY IMPORTANT ! This call must be done as the current pipe user,
@@ -2317,10 +2317,17 @@ NTSTATUS _samr_create_user(pipes_struct
}
+ /* Try passdb lookup again */
+ become_root();
+ ret = pdb_getsampwnam(sam_pass, account);
+ unbecome_root();
+
+ if (ret != True) {
/* implicit call to getpwnam() next. we have a valid SID coming out of this call */
if ( !NT_STATUS_IS_OK(nt_status = pdb_init_sam_new(&sam_pass, account, new_rid)) )
return nt_status;
+ }
pdb_set_acct_ctrl(sam_pass, acb_info, PDB_CHANGED);