]> git.sur5r.net Git - openldap/commitdiff
Fix minor memory leak and remove redundant be_isroot_pw() checks.
authorKurt Zeilenga <kurt@openldap.org>
Mon, 1 Mar 1999 19:42:06 +0000 (19:42 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 1 Mar 1999 19:42:06 +0000 (19:42 +0000)
Suggested by Pierangelo Masarati <pmasarati@bci.it> in post to -bugs.

servers/slapd/back-ldbm/bind.c

index ac461e7668f04296c1d3a498d063864ba0eae960..d70c43eb4529f20808db43d614ba4de58f9e005e 100644 (file)
@@ -118,39 +118,35 @@ ldbm_back_bind(
                        /* stop front end from sending result */
                        rc = 1;
                        goto return_results;
-               } else if ( be_isroot_pw( be, dn, cred ) ) {
+               } 
+
+               /* check for root dn/passwd */
+               if ( be_isroot_pw( be, dn, cred ) ) {
                        /* front end will send result */
+                       if(*edn != NULL) free( edn );
                        *edn = ch_strdup( be_root_dn( be ) );
                        rc = 0;
                        goto return_results;
                }
 
                if ( (a = attr_find( e->e_attrs, "userpassword" )) == NULL ) {
-                       if ( be_isroot_pw( be, dn, cred ) ) {
-                               /* front end will send result */
-                               *edn = ch_strdup( be_root_dn( be ) );
-                               rc = 0;
-                               goto return_results;
-                       }
                        send_ldap_result( conn, op, LDAP_INAPPROPRIATE_AUTH,
                            NULL, NULL );
+
+                       /* stop front end from sending result */
                        rc = 1;
                        goto return_results;
                }
 
                if ( crypted_value_find( a->a_vals, cred, a->a_syntax, 0, cred ) != 0 )
                {
-                       if ( be_isroot_pw( be, dn, cred ) ) {
-                               /* front end will send result */
-                               *edn = ch_strdup( be_root_dn( be ) );
-                               rc = 0;
-                               goto return_results;
-                       }
                        send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
                                NULL, NULL );
+                       /* stop front end from sending result */
                        rc = 1;
                        goto return_results;
                }
+
                rc = 0;
                break;
 
@@ -176,6 +172,7 @@ ldbm_back_bind(
                            NULL, NULL );
                        rc = 1;
                        goto return_results;
+
                } else {        /* look for krbName match */
                        struct berval   krbval;