]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
merge in allow null search base code (behind ifdef) from -devel
authorKurt Zeilenga <kurt@openldap.org>
Wed, 16 Sep 1998 05:10:53 +0000 (05:10 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 16 Sep 1998 05:10:53 +0000 (05:10 +0000)
servers/slapd/backend.c

index 998bfa8c6acc215d0e6a1240cb494210580d55a1..67dafc69ec907479d5e58fbf66ad3b05d5bc27bb 100644 (file)
@@ -21,6 +21,7 @@ extern int    ldbm_back_abandon();
 extern int     ldbm_back_config();
 extern int     ldbm_back_init();
 extern int     ldbm_back_close();
+extern int      ldbm_back_group();
 #endif
 
 #ifdef LDAP_PASSWD
@@ -86,6 +87,9 @@ new_backend(
                be->be_config = ldbm_back_config;
                be->be_init = ldbm_back_init;
                be->be_close = ldbm_back_close;
+#ifdef ACLGROUP
+               be->be_group = ldbm_back_group;
+#endif
                be->be_type = "ldbm";
                foundit = 1;
        }
@@ -105,6 +109,9 @@ new_backend(
                be->be_config = passwd_back_config;
                be->be_init = NULL;
                be->be_close = NULL;
+#ifdef ACLGROUP
+               be->be_group = NULL;
+#endif
                be->be_type = "passwd";
                foundit = 1;
        }
@@ -124,6 +131,9 @@ new_backend(
                be->be_config = shell_back_config;
                be->be_init = shell_back_init;
                be->be_close = NULL;
+#ifdef ACLGROUP
+               be->be_group = NULL;
+#endif
                be->be_type = "shell";
                foundit = 1;
        }
@@ -149,7 +159,20 @@ select_backend( char * dn )
        dnlen = strlen( dn );
        for ( i = 0; i < nbackends; i++ ) {
                for ( j = 0; backends[i].be_suffix != NULL &&
-                   backends[i].be_suffix[j] != NULL; j++ ) {
+                   backends[i].be_suffix[j] != NULL; j++ )
+               {
+#ifdef LDAP_ALLOW_NULL_SEARCH_BASE
+                       /* Add greg@greg.rim.or.jp
+                        * It's quick hack for cheap client
+                        * Some browser offer a NULL base at ldap_search
+                        */
+                       if(dnlen == 0) {
+                               Debug( LDAP_DEBUG_TRACE,
+                                       "select_backend: use default backend\n", 0, 0, 0 );
+                               return (&backends[i]);
+                       }
+#endif /* LDAP_ALLOW_NULL_SEARCH_BASE */
+
                        len = strlen( backends[i].be_suffix[j] );
 
                        if ( len > dnlen ) {
@@ -231,3 +254,14 @@ be_unbind(
                }
        }
 }
+
+#ifdef ACLGROUP
+int 
+be_group(Backend *be, char *bdn, char *edn)
+{
+        if (be->be_group)
+                return(be->be_group(be, bdn, edn));
+        else
+                return(1);
+}
+#endif