svn commit: samba r2891 - in branches/SAMBA_4_0/source/ldap_server: .

metze at samba.org metze at samba.org
Sun Oct 10 02:24:43 GMT 2004


Author: metze
Date: 2004-10-10 02:24:42 +0000 (Sun, 10 Oct 2004)
New Revision: 2891

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/ldap_server&rev=2891&nolog=1

Log:
call rootDSE only with LDAP_SEARCH_SCOPE_BASE

this is needed because of the global catalog

metze

Modified:
   branches/SAMBA_4_0/source/ldap_server/ldap_backend.c
   branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c


Changeset:
Modified: branches/SAMBA_4_0/source/ldap_server/ldap_backend.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_backend.c	2004-10-10 01:59:22 UTC (rev 2890)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_backend.c	2004-10-10 02:24:42 UTC (rev 2891)
@@ -45,9 +45,10 @@
 	return NT_STATUS_OK;
 }
 
-struct ldapsrv_partition *ldapsrv_get_partition(struct ldapsrv_connection *conn, const char *dn)
+struct ldapsrv_partition *ldapsrv_get_partition(struct ldapsrv_connection *conn, const char *dn, enum ldap_scope scope)
 {
-	if (strcasecmp("", dn) == 0) {
+	if (scope == LDAP_SEARCH_SCOPE_BASE
+	    && strcasecmp("", dn) == 0) {
 		return conn->service->rootDSE;
 	}
 
@@ -87,7 +88,7 @@
 	DEBUGADD(10, (" basedn: %s", req->basedn));
 	DEBUGADD(10, (" filter: %s\n", req->filter));
 
-	part = ldapsrv_get_partition(call->conn, req->basedn);
+	part = ldapsrv_get_partition(call->conn, req->basedn, req->scope);
 
 	if (!part->ops->Search) {
 		struct ldap_Result *done;
@@ -118,7 +119,7 @@
 	DEBUG(10, ("ModifyRequest"));
 	DEBUGADD(10, (" dn: %s", req->dn));
 
-	part = ldapsrv_get_partition(call->conn, req->dn);
+	part = ldapsrv_get_partition(call->conn, req->dn, LDAP_SEARCH_SCOPE_SUB);
 
 	if (!part->ops->Modify) {
 		return ldapsrv_unwilling(call, 53);
@@ -135,7 +136,7 @@
 	DEBUG(10, ("AddRequest"));
 	DEBUGADD(10, (" dn: %s", req->dn));
 
-	part = ldapsrv_get_partition(call->conn, req->dn);
+	part = ldapsrv_get_partition(call->conn, req->dn, LDAP_SEARCH_SCOPE_SUB);
 
 	if (!part->ops->Add) {
 		return ldapsrv_unwilling(call, 53);
@@ -152,7 +153,7 @@
 	DEBUG(10, ("DelRequest"));
 	DEBUGADD(10, (" dn: %s", req->dn));
 
-	part = ldapsrv_get_partition(call->conn, req->dn);
+	part = ldapsrv_get_partition(call->conn, req->dn, LDAP_SEARCH_SCOPE_SUB);
 
 	if (!part->ops->Del) {
 		return ldapsrv_unwilling(call, 53);
@@ -170,7 +171,7 @@
 	DEBUGADD(10, (" dn: %s", req->dn));
 	DEBUGADD(10, (" newrdn: %s", req->newrdn));
 
-	part = ldapsrv_get_partition(call->conn, req->dn);
+	part = ldapsrv_get_partition(call->conn, req->dn, LDAP_SEARCH_SCOPE_SUB);
 
 	if (!part->ops->ModifyDN) {
 		return ldapsrv_unwilling(call, 53);
@@ -187,7 +188,7 @@
 	DEBUG(10, ("CompareRequest"));
 	DEBUGADD(10, (" dn: %s", req->dn));
 
-	part = ldapsrv_get_partition(call->conn, req->dn);
+	part = ldapsrv_get_partition(call->conn, req->dn, LDAP_SEARCH_SCOPE_SUB);
 
 	if (!part->ops->Compare) {
 		return ldapsrv_unwilling(call, 53);

Modified: branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c
===================================================================
--- branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2004-10-10 01:59:22 UTC (rev 2890)
+++ branches/SAMBA_4_0/source/ldap_server/ldap_rootdse.c	2004-10-10 02:24:42 UTC (rev 2891)
@@ -315,8 +315,7 @@
 	const char **attrs = NULL;
 
 	if (r->scope != LDAP_SEARCH_SCOPE_BASE) {
-		count = -1;
-		goto no_base_scope;
+		return NT_STATUS_INVALID_PARAMETER;
 	}
 
 	local_ctx = talloc_named(call, 0, "rootdse_Search local memory context");



More information about the samba-cvs mailing list