[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-2338-gcbb55b3

Jeremy Allison jra at samba.org
Tue Jun 16 20:19:26 GMT 2009


The branch, master has been updated
       via  cbb55b34e27b3927f4fb05e47cd8c19828553b6a (commit)
      from  29b8e08b83eeb0ab7d33bf46981cdbad8c35dc9b (commit)

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


- Log -----------------------------------------------------------------
commit cbb55b34e27b3927f4fb05e47cd8c19828553b6a
Author: Jeremy Allison <jra at samba.org>
Date:   Tue Jun 16 13:17:24 2009 -0700

    _lsa_EnumAccountRights and _lsa_EnumPrivsAccount can return an
    empty set of privilages if the SID doesn't have any.
    (From [MS-LSAD.pdf])
    Jeremy.

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

Summary of changes:
 source3/rpc_server/srv_lsa_nt.c |   36 +++++++++++++++++-------------------
 1 files changed, 17 insertions(+), 19 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 f434cfa..8773c29 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -1672,23 +1672,22 @@ NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p,
 	if (!(info->access & LSA_ACCOUNT_VIEW))
 		return NT_STATUS_ACCESS_DENIED;
 
-	if ( !get_privileges_for_sids( &mask, &info->sid, 1 ) )
-		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+	get_privileges_for_sids(&mask, &info->sid, 1);
 
 	privilege_set_init( &privileges );
 
+	priv_set = TALLOC_ZERO_P(p->mem_ctx, struct lsa_PrivilegeSet);
+	if (!priv_set) {
+		status = NT_STATUS_NO_MEMORY;
+		goto done;
+	}
+
 	if ( se_priv_to_privilege_set( &privileges, &mask ) ) {
 
 		DEBUG(10,("_lsa_EnumPrivsAccount: %s has %d privileges\n",
 			  sid_string_dbg(&info->sid),
 			  privileges.count));
 
-		priv_set = TALLOC_ZERO_P(p->mem_ctx, struct lsa_PrivilegeSet);
-		if (!priv_set) {
-			status = NT_STATUS_NO_MEMORY;
-			goto done;
-		}
-
 		luid_attrs = TALLOC_ZERO_ARRAY(p->mem_ctx,
 					       struct lsa_LUIDAttribute,
 					       privileges.count);
@@ -1707,11 +1706,14 @@ NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p,
 		priv_set->unknown = 0;
 		priv_set->set = luid_attrs;
 
-		*r->out.privs = priv_set;
 	} else {
-		status = NT_STATUS_NO_SUCH_PRIVILEGE;
+		priv_set->count = 0;
+		priv_set->unknown = 0;
+		priv_set->set = NULL;
 	}
 
+	*r->out.privs = priv_set;
+
  done:
 	privilege_set_free( &privileges );
 
@@ -2150,20 +2152,16 @@ NTSTATUS _lsa_EnumAccountRights(pipes_struct *p,
 
 	sid_copy( &sid, r->in.sid );
 
-	if ( !get_privileges_for_sids( &mask, &sid, 1 ) )
-		return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+	get_privileges_for_sids(&mask, &sid, 1);
 
 	privilege_set_init( &privileges );
 
-	if ( se_priv_to_privilege_set( &privileges, &mask ) ) {
+	se_priv_to_privilege_set(&privileges, &mask);
 
-		DEBUG(10,("_lsa_EnumAccountRights: %s has %d privileges\n",
-			  sid_string_dbg(&sid), privileges.count));
+	DEBUG(10,("_lsa_EnumAccountRights: %s has %d privileges\n",
+		  sid_string_dbg(&sid), privileges.count));
 
-		status = init_lsa_right_set(p->mem_ctx, r->out.rights, &privileges);
-	} else {
-		status = NT_STATUS_NO_SUCH_PRIVILEGE;
-	}
+	status = init_lsa_right_set(p->mem_ctx, r->out.rights, &privileges);
 
 	privilege_set_free( &privileges );
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list