svn commit: samba r12408 - in branches/SAMBA_4_0/source/lib/ldb/ldb_tdb: .

metze at samba.org metze at samba.org
Wed Dec 21 20:25:44 GMT 2005


Author: metze
Date: 2005-12-21 20:25:43 +0000 (Wed, 21 Dec 2005)
New Revision: 12408

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12408

Log:
as we always add the destinguishedName as autogenerated value,
don't store it on disk, as this would cause confusing results

metze
Modified:
   branches/SAMBA_4_0/source/lib/ldb/ldb_tdb/ldb_pack.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_tdb/ldb_pack.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_tdb/ldb_pack.c	2005-12-21 12:52:04 UTC (rev 12407)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_tdb/ldb_pack.c	2005-12-21 20:25:43 UTC (rev 12408)
@@ -59,6 +59,17 @@
 	return p[0] | (p[1]<<8) | (p[2]<<16) | (p[3]<<24);
 }
 
+static int attribute_storable_values(const struct ldb_message_element *el)
+{
+	if (el->num_values == 0) return 0;
+
+	if (ldb_attr_cmp(el->name, "dn") == 0) return 0;
+
+	if (ldb_attr_cmp(el->name, "distinguishedName") == 0) return 0;
+
+	return el->num_values;
+}
+
 /*
   pack a ldb message into a linear buffer in a TDB_DATA
 
@@ -84,21 +95,18 @@
 		return -1;
 	}
 
-	for (i=0;i<message->num_elements;i++) {
-		if (message->elements[i].num_values != 0) {
-			real_elements++;
-		}
-	}
-
 	/* work out how big it needs to be */
 	size = 8;
 
 	size += 1 + strlen(dn);
 
 	for (i=0;i<message->num_elements;i++) {
-		if (message->elements[i].num_values == 0) {
+		if (attribute_storable_values(&message->elements[i]) == 0) {
 			continue;
 		}
+
+		real_elements++;
+
 		size += 1 + strlen(message->elements[i].name) + 4;
 		for (j=0;j<message->elements[i].num_values;j++) {
 			size += 4 + message->elements[i].values[j].length + 1;
@@ -126,7 +134,7 @@
 	p += len + 1;
 	
 	for (i=0;i<message->num_elements;i++) {
-		if (message->elements[i].num_values == 0) {
+		if (attribute_storable_values(&message->elements[i]) == 0) {
 			continue;
 		}
 		len = strlen(message->elements[i].name);



More information about the samba-cvs mailing list