[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-1678-g4724fef

Günther Deschner gd at samba.org
Mon May 18 20:59:33 GMT 2009


The branch, master has been updated
       via  4724fef8979c3f0e66cb8e41936af270901093b4 (commit)
      from  0a9049be872a0eaf56c1449f8b362b6d91dd781b (commit)

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


- Log -----------------------------------------------------------------
commit 4724fef8979c3f0e66cb8e41936af270901093b4
Author: Günther Deschner <gd at samba.org>
Date:   Mon May 18 21:00:29 2009 +0200

    s3-lsa: start a very basic implementation of _lsa_DeleteObject().
    
    Certainly not the full story but this gets us closer to pass the
    RPC-SAMR-USERS-PRIVILEGES test.
    
    Guenther

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

Summary of changes:
 source3/rpc_server/srv_lsa_nt.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index fb5117c..7cddb5c 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -1290,7 +1290,29 @@ NTSTATUS _lsa_SetSecret(pipes_struct *p, struct lsa_SetSecret *r)
 NTSTATUS _lsa_DeleteObject(pipes_struct *p,
 			   struct lsa_DeleteObject *r)
 {
-	return NT_STATUS_ACCESS_DENIED;
+	NTSTATUS status;
+	struct lsa_info *info = NULL;
+
+	if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&info)) {
+		return NT_STATUS_INVALID_HANDLE;
+	}
+
+	/* check to see if the pipe_user is root or a Domain Admin since
+	   account_pol.tdb was already opened as root, this is all we have */
+
+	if (p->server_info->utok.uid != sec_initial_uid() &&
+	    !nt_token_check_domain_rid(p->server_info->ptok,
+				       DOMAIN_GROUP_RID_ADMINS)) {
+		return NT_STATUS_ACCESS_DENIED;
+	}
+
+	status = privilege_delete_account(&info->sid);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(10,("_lsa_DeleteObject: privilege_delete_account gave: %s\n",
+			nt_errstr(status)));
+	}
+
+	return status;
 }
 
 /***************************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list