summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2005-10-11 20:14:04 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:04:56 -0500
commit254938c636b6062630d54a598b2975d7a984f70d (patch)
treef8008c90b1719919308016dd9723e296a41bfac0 /source3/rpc_server
parenta5b2ec0ba0b13095d5b129ff2f4d3d6e1fea951a (diff)
downloadsamba-254938c636b6062630d54a598b2975d7a984f70d.tar.gz
samba-254938c636b6062630d54a598b2975d7a984f70d.tar.bz2
samba-254938c636b6062630d54a598b2975d7a984f70d.zip
r10911: part of #2861: add rename support for usrmgr.exe when using tdbsam
This gets it working before replacing tdb with the samba4 version. (This used to be commit 8210b0503a050e12ee1b4335fa6e50d10ad06577)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_samr_nt.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index b69f03a3a2..26a691e9b4 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -2424,6 +2424,32 @@ NTSTATUS _samr_open_alias(pipes_struct *p, SAMR_Q_OPEN_ALIAS *q_u, SAMR_R_OPEN_A
}
/*******************************************************************
+ set_user_info_7
+ ********************************************************************/
+static NTSTATUS set_user_info_7(const SAM_USER_INFO_7 *id7, SAM_ACCOUNT *pwd)
+{
+ fstring new_name;
+ NTSTATUS rc;
+
+ if (id7 == NULL) {
+ DEBUG(5, ("set_user_info_7: NULL id7\n"));
+ pdb_free_sam(&pwd);
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
+ if(!rpcstr_pull(new_name, id7->uni_name.buffer, sizeof(new_name), id7->uni_name.uni_str_len*2, 0)) {
+ DEBUG(5, ("set_user_info_7: failed to get new username\n"));
+ pdb_free_sam(&pwd);
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
+ rc = pdb_rename_sam_account(pwd, new_name);
+
+ pdb_free_sam(&pwd);
+ return rc;
+}
+
+/*******************************************************************
set_user_info_16
********************************************************************/
@@ -2924,6 +2950,9 @@ NTSTATUS _samr_set_userinfo2(pipes_struct *p, SAMR_Q_SET_USERINFO2 *q_u, SAMR_R_
/* ok! user info levels (lots: see MSDEV help), off we go... */
switch (switch_value) {
+ case 7:
+ r_u->status = set_user_info_7(ctr->info.id7, pwd);
+ break;
case 16:
if (!set_user_info_16(ctr->info.id16, pwd))
r_u->status = NT_STATUS_ACCESS_DENIED;