[SCM] Samba Shared Repository - branch master updated

Nadezhda Ivanova nivanova at samba.org
Tue Dec 15 03:02:47 MST 2009


The branch, master has been updated
       via  4deaa84... Fixed a problem with duplicate values of allowedAttributesEffective.
      from  ef5508b... s4: rename res/res2 to something more explicit

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


- Log -----------------------------------------------------------------
commit 4deaa84ce4a425bfba4b2612d79cc6fa1e00cca5
Author: Nadezhda Ivanova <nadezhda.ivanova at postpath.com>
Date:   Tue Dec 15 12:02:20 2009 +0200

    Fixed a problem with duplicate values of allowedAttributesEffective.

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

Summary of changes:
 source4/dsdb/samdb/ldb_modules/acl.c |    4 +++-
 source4/dsdb/schema/schema_query.c   |   11 ++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/samdb/ldb_modules/acl.c b/source4/dsdb/samdb/ldb_modules/acl.c
index 45aa294..dcd015b 100644
--- a/source4/dsdb/samdb/ldb_modules/acl.c
+++ b/source4/dsdb/samdb/ldb_modules/acl.c
@@ -431,7 +431,9 @@ static int acl_allowedAttributes(struct ldb_module *module,
 				return LDB_ERR_OPERATIONS_ERROR;
 			}
 			/* remove constructed attributes */
-			if (attr->systemFlags & DS_FLAG_ATTR_IS_CONSTRUCTED) {
+			if (attr->systemFlags & DS_FLAG_ATTR_IS_CONSTRUCTED
+			    || attr->systemOnly
+			    || (attr->linkID != 0 && attr->linkID % 2 != 0 )) {
 				continue;
 			}
 			ret = acl_check_access_on_attribute(module,
diff --git a/source4/dsdb/schema/schema_query.c b/source4/dsdb/schema/schema_query.c
index 0a58f7a..f563f01 100644
--- a/source4/dsdb/schema/schema_query.c
+++ b/source4/dsdb/schema/schema_query.c
@@ -350,6 +350,14 @@ static const char **dsdb_full_attribute_list_internal_el(TALLOC_CTX *mem_ctx,
 	return attr_list;
 }
 
+static int qsort_string(const void *v1,
+			const void *v2)
+{
+	char * const *s1 = v1;
+	char * const *s2 = v2;
+	return strcasecmp(*s1, *s2);
+}
+
 /* Helper function to remove duplicates from the attribute list to be returned */
 static const char **dedup_attr_list(const char **attr_list) 
 {
@@ -359,13 +367,14 @@ static const char **dedup_attr_list(const char **attr_list)
 		int i;
 		qsort(attr_list, new_len,
 		      sizeof(*attr_list),
-		      (comparison_fn_t)strcasecmp);
+		      (comparison_fn_t)qsort_string);
 		
 		for (i=1 ; i < new_len; i++) {
 			const char **val1 = &attr_list[i-1];
 			const char **val2 = &attr_list[i];
 			if (ldb_attr_cmp(*val1, *val2) == 0) {
 				memmove(val1, val2, (new_len - i) * sizeof( *attr_list)); 
+				attr_list[new_len-1] = NULL;
 				new_len--;
 				i--;
 			}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list