[SCM] Samba Shared Repository - branch v3-6-test updated

Jeremy Allison jra at samba.org
Thu Nov 18 10:59:31 MST 2010


The branch, v3-6-test has been updated
       via  7c9515c Fix our privileges code to display privileges with the "high" 32-bit value set.
      from  886471d s3: Call sid_check_is_domain instead of dom_sid_equal

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 7c9515cbe26364a5ecfe609f56ac0ee6b6115f67
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Nov 18 09:58:38 2010 -0800

    Fix our privileges code to display privileges with the "high" 32-bit value set.
    
    SeSecurityPrivilege is the first LUID we have added that has a non-zero
    "high" value, ensure our LUID code correctly supports it.
    
    Jeremy.

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

Summary of changes:
 source3/lib/privileges_basic.c |   20 ++++----------------
 1 files changed, 4 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/privileges_basic.c b/source3/lib/privileges_basic.c
index 5843895..b4aca8e 100644
--- a/source3/lib/privileges_basic.c
+++ b/source3/lib/privileges_basic.c
@@ -408,11 +408,8 @@ const char *luid_to_privilege_name(const struct lsa_LUID *set)
 {
 	int i;
 
-	if (set->high != 0)
-		return NULL;
-
 	for ( i=0; !se_priv_equal(&privs[i].se_priv, &se_priv_end); i++ ) {
-		if ( set->low == privs[i].luid.low ) {
+		if (memcmp(set, &privs[i].luid, sizeof(struct lsa_LUID)) == 0) {
 			return privs[i].name;
 		}
 	}
@@ -437,9 +434,7 @@ static bool privilege_set_add(PRIVILEGE_SET *priv_set, struct lsa_LUIDAttribute
 		return False;
 	}
 
-	new_set[priv_set->count].luid.high = set.luid.high;
-	new_set[priv_set->count].luid.low = set.luid.low;
-	new_set[priv_set->count].attribute = set.attribute;
+	new_set[priv_set->count] = set;
 
 	priv_set->count++;
 	priv_set->set = new_set;
@@ -456,8 +451,7 @@ bool se_priv_to_privilege_set( PRIVILEGE_SET *set, SE_PRIV *mask )
 	uint32 num_privs = count_all_privileges();
 	struct lsa_LUIDAttribute luid;
 
-	luid.attribute = 0;
-	luid.luid.high = 0;
+	ZERO_STRUCT(luid);
 
 	for ( i=0; i<num_privs; i++ ) {
 		if ( !is_privilege_assigned(mask, &privs[i].se_priv) )
@@ -481,7 +475,7 @@ static bool luid_to_se_priv( struct lsa_LUID *luid, SE_PRIV *mask )
 	uint32 num_privs = count_all_privileges();
 
 	for ( i=0; i<num_privs; i++ ) {
-		if ( luid->low == privs[i].luid.low ) {
+		if (memcmp(luid, &privs[i].luid, sizeof(struct lsa_LUID)) == 0) {
 			se_priv_copy( mask, &privs[i].se_priv );
 			return True;
 		}
@@ -502,12 +496,6 @@ bool privilege_set_to_se_priv( SE_PRIV *mask, struct lsa_PrivilegeSet *privset )
 	for ( i=0; i<privset->count; i++ ) {
 		SE_PRIV r;
 
-		/* sanity check for invalid privilege.  we really
-		   only care about the low 32 bits */
-
-		if ( privset->set[i].luid.high != 0 )
-			return False;
-
 		if ( luid_to_se_priv( &privset->set[i].luid, &r ) )
 			se_priv_add( mask, &r );
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list