svn commit: samba r9690 - in branches/SAMBA_4_0/source/lib/ldb: ldb_map samba tests

jelmer at samba.org jelmer at samba.org
Sat Aug 27 19:46:29 GMT 2005


Author: jelmer
Date: 2005-08-27 19:46:28 +0000 (Sat, 27 Aug 2005)
New Revision: 9690

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

Log:
Extend test + fix several bugs

Modified:
   branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.c
   branches/SAMBA_4_0/source/lib/ldb/samba/samba3sam.c
   branches/SAMBA_4_0/source/lib/ldb/tests/test-samba3sam.sh


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.c	2005-08-27 18:30:00 UTC (rev 9689)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_map/ldb_map.c	2005-08-27 19:46:28 UTC (rev 9690)
@@ -120,8 +120,9 @@
 
 	attr = map_find_attr_local(module, tree->u.equality.attr);
 
-	if (!attr) {
+	if (!attr || attr->type == MAP_KEEP) {
 		DEBUG(0, ("Unable to find local attribute '%s', leaving as is\n", tree->u.equality.attr));
+		new_tree->u.equality.attr = talloc_strdup(new_tree, tree->u.equality.attr);
 		return new_tree;
 	}
 
@@ -387,6 +388,7 @@
 	return ret;
 }
 
+/* Used for search */
 static struct ldb_message *ldb_map_message_incoming(struct ldb_module *module, const char * const*attrs, const struct ldb_message *mi)
 {
 	int i;
@@ -418,6 +420,7 @@
 			case MAP_IGNORE:break;
 			case MAP_RENAME:
 				oldelm = ldb_msg_find_element(mi, attr->u.rename.remote_name);
+				if (!oldelm) continue;
 
 				elm = talloc(msg, struct ldb_message_element);
 				elm->name = talloc_strdup(elm, attr->local_name);
@@ -429,14 +432,18 @@
 				
 			case MAP_CONVERT:
 				oldelm = ldb_msg_find_element(mi, attr->u.rename.remote_name);
-				elm = attr->u.convert.convert_local(msg, attr->local_name, oldelm);
+				if (!oldelm) continue;
 
+				elm = attr->u.convert.convert_remote(msg, attr->local_name, oldelm);
+				if (!elm) continue;
+
 				ldb_msg_add(module->ldb, msg, elm, elm->flags);
 				break;
 
 			case MAP_KEEP:
 				oldelm = ldb_msg_find_element(mi, attr->local_name);
-
+				if (!oldelm) continue;
+				
 				elm = talloc(msg, struct ldb_message_element);
 
 				elm->num_values = oldelm->num_values;
@@ -448,6 +455,8 @@
 
 			case MAP_GENERATE:
 				elm = attr->u.generate.generate_local(msg, attr->local_name, mi);
+				if (!elm) continue;
+
 				ldb_msg_add(module->ldb, msg, elm, elm->flags);
 				break;
 			default: 
@@ -461,6 +470,7 @@
 	return msg;
 }
 
+/* Used for add, modify */
 static struct ldb_message *ldb_map_message_outgoing(struct ldb_module *module, const struct ldb_message *mo)
 {
 	struct ldb_message *msg = talloc_zero(module, struct ldb_message);
@@ -493,7 +503,7 @@
 			break;
 
 		case MAP_CONVERT:
-			elm = attr->u.convert.convert_remote(msg, attr->local_name, &mo->elements[i]);
+			elm = attr->u.convert.convert_local(msg, attr->u.convert.remote_name, &mo->elements[i]);
 			ldb_msg_add(module->ldb, msg, elm, elm->flags);
 			break;
 

Modified: branches/SAMBA_4_0/source/lib/ldb/samba/samba3sam.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/samba/samba3sam.c	2005-08-27 18:30:00 UTC (rev 9689)
+++ branches/SAMBA_4_0/source/lib/ldb/samba/samba3sam.c	2005-08-27 19:46:28 UTC (rev 9690)
@@ -214,8 +214,8 @@
 		.local_name = "unixName",
 		.type = MAP_CONVERT,
 		.u.convert.remote_name = "gidNumber",
-		.u.convert.convert_local = convert_unix_id2name,
-		.u.convert.convert_remote = convert_unix_name2id, 
+		.u.convert.convert_local = convert_unix_name2id,
+		.u.convert.convert_remote = convert_unix_id2name, 
 	},
 
 	/* uid -> unixName */
@@ -223,8 +223,8 @@
 		.local_name = "unixName",
 		.type = MAP_CONVERT,
 		.u.convert.remote_name = "uid",
-		.u.convert.convert_local = convert_unix_id2name,
-		.u.convert.convert_remote = convert_unix_name2id,
+		.u.convert.convert_local = convert_unix_name2id,
+		.u.convert.convert_remote = convert_unix_id2name,
 	},
 
 	/* displayName -> name */

Modified: branches/SAMBA_4_0/source/lib/ldb/tests/test-samba3sam.sh
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/tests/test-samba3sam.sh	2005-08-27 18:30:00 UTC (rev 9689)
+++ branches/SAMBA_4_0/source/lib/ldb/tests/test-samba3sam.sh	2005-08-27 19:46:28 UTC (rev 9690)
@@ -2,7 +2,33 @@
 
 rm -f samba3.ldb
 
-$VALGRIND ldbadd -H tdb://samba3.ldb < samba3.ldif
+echo "Adding samba3 LDIF..."
+$VALGRIND ldbadd -H tdb://samba3.ldb < samba3.ldif || exit 1
 
-OPT="-o modules:samba3sam -H tdb://samba3.ldb "
-$VALGRIND ldbsearch $OPT "(cn=Administrator)"
+LOC="-H tdb://samba3.ldb"
+OPT="-o modules:samba3sam $LOC"
+
+echo "Looking up by non-mapped attribute"
+$VALGRIND ldbsearch $OPT "(cn=Administrator)" || exit 1
+
+echo "Looking up by mapped attribute"
+$VALGRIND ldbsearch $OPT "(name=Backup Operators)" || exit 1
+
+echo "Looking up by old name of renamed attribute"
+$VALGRIND ldbsearch $OPT "(displayName=Backup Operators)" || exit 1
+
+echo "Adding a record"
+$VALGRIND ldbadd $OPT <<EOF
+dn: cn=Foo,dc=idealx,dc=org
+unixName: root
+lastLogon: 20000
+cn: Foo
+
+EOF
+
+echo "Checking for existance of record (mapped)"
+$VALGRIND ldbsearch $OPT "(cn=Foo)" unixName lastLogon cn || exit 1
+
+echo "Checking for existance of record (non-mapped)"
+$VALGRIND ldbsearch $LOC "(cn=Foo)" uid sambaLogonTime cn || exit 1
+



More information about the samba-cvs mailing list