]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/bind.c
Don't use perror after ldbm_store() failure; errno is not set then.
[openldap] / servers / slapd / bind.c
index fbffeebc9fae67fd80dc51637beccb11ef1e99be..7cb354ac1a75e7e6588d7f4d101d79062bc364cc 100644 (file)
  * is provided ``as is'' without express or implied warranty.
  */
 
+#include "portable.h"
+
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include "slap.h"
 
-extern Backend *select_backend();
+#include <ac/string.h>
+#include <ac/socket.h>
 
-extern char    *default_referral;
+#include "slap.h"
 
 void
 do_bind(
@@ -29,7 +28,8 @@ do_bind(
 )
 {
        BerElement      *ber = op->o_ber;
-       int             version, method, len, rc;
+       int             version, method, len;
+       unsigned long   rc;
        char            *dn;
        struct berval   cred;
        Backend         *be;
@@ -50,7 +50,7 @@ do_bind(
         *      }
         */
 
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        /*
         * in version 3.0 there is an extra SEQUENCE tag after the
         * BindRequest SEQUENCE tag.
@@ -79,13 +79,13 @@ do_bind(
                    "decoding error" );
                return;
        }
-#ifdef COMPAT30
+#ifdef LDAP_COMPAT30
        if ( conn->c_version == 30 ) {
                switch ( method ) {
                case LDAP_AUTH_SIMPLE_30:
                        method = LDAP_AUTH_SIMPLE;
                        break;
-#ifdef KERBEROS
+#ifdef HAVE_KERBEROS
                case LDAP_AUTH_KRBV41_30:
                        method = LDAP_AUTH_KRBV41;
                        break;
@@ -155,6 +155,9 @@ do_bind(
                return;
        }
 
+        /* alias suffix */
+        dn = suffixAlias ( dn, op, be );
+
        if ( be->be_bind != NULL ) {
                if ( (*be->be_bind)( be, conn, op, dn, method, &cred ) == 0 ) {
                        pthread_mutex_lock( &conn->c_dnmutex );