]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/backend.c
if continuation line starts with a tab, rewrite it to a space
[openldap] / servers / slapd / backend.c
index ac82f262767ee74f876049777c911ef5b4a8f0c3..1b26ee117f3b41e94f8b01992fc0835398df8a3d 100644 (file)
@@ -30,6 +30,9 @@
 #ifdef SLAPD_LDBM
 #include "back-ldbm/external.h"
 #endif
+#ifdef SLAPD_META
+#include "back-meta/external.h"
+#endif
 #ifdef SLAPD_PASSWD
 #include "back-passwd/external.h"
 #endif
@@ -62,6 +65,9 @@ static BackendInfo binfo[] = {
 #if defined(SLAPD_LDBM) && !defined(SLAPD_LDBM_DYNAMIC)
        {"ldbm",        ldbm_back_initialize},
 #endif
+#if defined(SLAPD_META) && !defined(SLAPD_META_DYNAMIC)
+       {"meta",        meta_back_initialize},
+#endif
 #if defined(SLAPD_PASSWD) && !defined(SLAPD_PASSWD_DYNAMIC)
        {"passwd",      passwd_back_initialize},
 #endif
@@ -513,10 +519,12 @@ select_backend(
                                continue;
                        }
 
-                       if ( len < dnlen && DN_SEPARATOR( dn[(dnlen-len)-1] ) ) {
+                       
+                       if ( (len < dnlen) && !(DN_SEPARATOR( dn[(dnlen-len)-1] )) ) {
                                /* make sure we have a separator */
                                continue;
                        }
+                       
 
                        if ( strcmp( backends[i].be_nsuffix[j], &dn[dnlen-len] ) == 0 ) {
                                if( be == NULL ) {
@@ -831,6 +839,11 @@ backend_check_restrictions(
                                *text = "update confidentiality required";
                                return LDAP_CONFIDENTIALITY_REQUIRED;
                        }
+
+                       if( op->o_ndn == NULL ) {
+                               *text = "modifications require authentication";
+                               return LDAP_OPERATIONS_ERROR;
+                       }
                }
        }