]> git.sur5r.net Git - openldap/commitdiff
Misc cleanup
authorHoward Chu <hyc@openldap.org>
Sat, 29 Dec 2001 05:44:37 +0000 (05:44 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 29 Dec 2001 05:44:37 +0000 (05:44 +0000)
servers/slapd/back-bdb/dn2id.c
servers/slapd/back-bdb/search.c

index 4fca067aafceb89285f259e25e79a6d7dc9bdb6c..1f5969e3ff1e4b10e88150b312baa50209a68e08 100644 (file)
@@ -606,7 +606,7 @@ int bdb_fix_dn(
        o = bdb_find_id_node(id, bdb->bi_tree);
        rlen = be->be_suffix[0]->bv_len + 1;
        nrlen = be->be_nsuffix[0]->bv_len + 1;
-       for (n = o; n; n=n->i_parent) {
+       for (n = o; n && n->i_parent; n=n->i_parent) {
                rlen += n->i_rdn->rdn.bv_len + 1;
                nrlen += n->i_rdn->nrdn.bv_len + 1;
        }
@@ -616,7 +616,7 @@ int bdb_fix_dn(
        e->e_nname.bv_val = e->e_name.bv_val + rlen;
        ptr = e->e_name.bv_val;
        nptr = e->e_nname.bv_val;
-       for (n = o; n; n=n->i_parent) {
+       for (n = o; n && n->i_parent; n=n->i_parent) {
                ptr = slap_strcopy(ptr, n->i_rdn->rdn.bv_val);
                *ptr++ = ',';
                nptr = slap_strcopy(nptr, n->i_rdn->nrdn.bv_val);
@@ -624,8 +624,6 @@ int bdb_fix_dn(
        }
        ldap_pvt_thread_rdwr_runlock(&bdb->bi_tree_rdwr);
 
-       ptr--;
-       nptr--;
        strcpy(ptr, be->be_suffix[0]->bv_val);
        strcpy(nptr, be->be_nsuffix[0]->bv_val);
 
@@ -665,7 +663,7 @@ bdb_dn2id_add(
        d->rdn.bv_val -= (long)d;
        d->nrdn.bv_val -= (long)d;
 
-       if (pdn) {
+       if (pdn->bv_len) {
                bdb_dn2id(be, txn, pdn, &d->parent);
        } else {
                d->parent = 0;
index 6456432f55641e2590570c6796dde6b1700a95af..df25630b8c54372a353f19cd2bdb4b475f52caff 100644 (file)
@@ -118,10 +118,10 @@ bdb_search(
                }
 
                send_ldap_result( conn, op,     rc=LDAP_REFERRAL ,
-                       matched_dn->bv_val, text, refs, NULL );
+                       matched_dn ? matched_dn->bv_val : NULL, text, refs, NULL );
 
-               ber_bvecfree( refs );
-               ber_bvfree( matched_dn );
+               if ( refs ) ber_bvecfree( refs );
+               if ( matched_dn ) ber_bvfree( matched_dn );
                return rc;
        }