[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