svn commit: samba r10252 - in branches/SAMBA_4_0/source: ldap_server nbt_server/wins scripting/ejs

tridge at samba.org tridge at samba.org
Fri Sep 16 03:18:50 GMT 2005


Author: tridge
Date: 2005-09-16 03:18:49 +0000 (Fri, 16 Sep 2005)
New Revision: 10252

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

Log:
a recent checkin from simo changed the handling of BASE and SUBTREE
searches in ldb to be more ldap compliant, but broke the wins server
and the ejs ldb code. This fixes those up so 'make test' passes again.

Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c
   branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2005-09-15 23:10:07 UTC (rev 10251)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2005-09-16 03:18:49 UTC (rev 10252)
@@ -294,7 +294,8 @@
 		attrs[j] = NULL;
 	}
 
-	count = ldb_search(ldb, NULL, 0, "dn=cn=rootDSE", attrs, &res);
+	count = ldb_search(ldb, ldb_dn_explode(local_ctx, "cn=rootDSE"), 0, 
+			   NULL, attrs, &res);
 	talloc_steal(local_ctx, res);
 
 	if (count == 1) {

Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c	2005-09-15 23:10:07 UTC (rev 10251)
+++ branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c	2005-09-16 03:18:49 UTC (rev 10252)
@@ -87,25 +87,21 @@
 /*
   return a DN for a nbt_name
 */
-static char *winsdb_dn(TALLOC_CTX *mem_ctx, struct nbt_name *name)
+static struct ldb_dn *winsdb_dn(TALLOC_CTX *mem_ctx, struct nbt_name *name)
 {
-	char *ret = talloc_asprintf(mem_ctx, "type=%02x", name->type);
-	if (ret == NULL) {
-		return ret;
+	struct ldb_dn *dn;
+
+	dn = ldb_dn_string_compose(mem_ctx, NULL, "type=%02x", name->type);
+	if (dn == NULL) {
+		return NULL;
 	}
-	if (name->name && *name->name) {
-		ret = talloc_asprintf_append(ret, ",name=%s", name->name);
+	if (dn && name->name && *name->name) {
+		dn = ldb_dn_string_compose(mem_ctx, dn, "name=%s", name->name);
 	}
-	if (ret == NULL) {
-		return ret;
+	if (dn && name->scope && *name->scope) {
+		dn = ldb_dn_string_compose(mem_ctx, dn, "scope=%s", name->scope);
 	}
-	if (name->scope && *name->scope) {
-		ret = talloc_asprintf_append(ret, ",scope=%s", name->scope);
-	}
-	if (ret == NULL) {
-		return ret;
-	}
-	return ret;
+	return dn;
 }
 
 /*
@@ -119,14 +115,11 @@
 	struct winsdb_record *rec;
 	struct ldb_message_element *el;
 	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
-	const char *expr;
 	int i;
 
-	expr = talloc_asprintf(tmp_ctx, "dn=%s", winsdb_dn(tmp_ctx, name));
-	if (expr == NULL) goto failed;
-
 	/* find the record in the WINS database */
-	ret = ldb_search(winssrv->wins_db, NULL, LDB_SCOPE_ONELEVEL, expr, NULL, &res);
+	ret = ldb_search(winssrv->wins_db, winsdb_dn(tmp_ctx, name), LDB_SCOPE_BASE, 
+			 NULL, NULL, &res);
 	if (res != NULL) {
 		talloc_steal(tmp_ctx, res);
 	}
@@ -184,7 +177,7 @@
 	struct ldb_message *msg = ldb_msg_new(mem_ctx);
 	if (msg == NULL) goto failed;
 
-	msg->dn = ldb_dn_explode(msg, winsdb_dn(msg, rec->name));
+	msg->dn = winsdb_dn(msg, rec->name);
 	if (msg->dn == NULL) goto failed;
 	ret |= ldb_msg_add_fmt(ldb, msg, "objectClass", "wins");
 	ret |= ldb_msg_add_fmt(ldb, msg, "active", "%u", rec->state);
@@ -276,7 +269,7 @@
 
 	winsdb_remove_version(winssrv, rec->version);
 
-	dn = ldb_dn_explode(tmp_ctx, winsdb_dn(tmp_ctx, rec->name));
+	dn = winsdb_dn(tmp_ctx, rec->name);
 	if (dn == NULL) goto failed;
 
 	ret = ldb_delete(ldb, dn);

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-09-15 23:10:07 UTC (rev 10251)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2005-09-16 03:18:49 UTC (rev 10252)
@@ -412,6 +412,7 @@
 	mprSetVar(ldb, "SCOPE_BASE", mprCreateNumberVar(LDB_SCOPE_BASE));
 	mprSetVar(ldb, "SCOPE_ONE", mprCreateNumberVar(LDB_SCOPE_ONELEVEL));
 	mprSetVar(ldb, "SCOPE_SUBTREE", mprCreateNumberVar(LDB_SCOPE_SUBTREE));
+	mprSetVar(ldb, "SCOPE_DEFAULT", mprCreateNumberVar(LDB_SCOPE_DEFAULT));
 
 	return 0;
 }



More information about the samba-cvs mailing list