]> git.sur5r.net Git - openldap/commitdiff
ITS#6616
authorQuanah Gibson-Mount <quanah@openldap.org>
Fri, 17 Dec 2010 18:55:37 +0000 (18:55 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 17 Dec 2010 18:55:37 +0000 (18:55 +0000)
CHANGES
servers/slapd/back-sql/entry-id.c

diff --git a/CHANGES b/CHANGES
index c1d98f5b6d55840d991ae3885dc33b73a988e2ff..7344cb915a3826a0199d1d7885332930f2f09108 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -22,6 +22,7 @@ OpenLDAP 2.4.24 Engineering
        Fixed slapd-meta anon retry with failed auth method (ITS#6643)
        Fixed slapd-meta rebind proc (ITS#6665)
        Fixed slapd-meta to correctly rebind as user (ITS#6574)
+       Fixed slapd-sql with null objectClass (ITS#6616)
        Fixed slapo-pcache callback freeing (ITS#6640)
        Fixed slapo-pcache to ignore undefined attrs (ITS#6600)
        Fixed slapo-ppolicy don't update opattrs on consumers (ITS#6608)
index 417a8a23a2a6b6362ad2fe54f12559b146bbdf51..6cef98dde6566cc71368941aa9a0d13f4cc1ad3b 100644 (file)
@@ -925,19 +925,26 @@ backsql_id2entry( backsql_srch_info *bsi, backsql_entryID *eid )
                goto done;
        }
 
-       ber_dupbv_x( &bsi->bsi_e->e_name, &eid->eid_dn, op->o_tmpmemctx );
-       ber_dupbv_x( &bsi->bsi_e->e_nname, &eid->eid_ndn, op->o_tmpmemctx );
-
        bsi->bsi_e->e_attrs = NULL;
        bsi->bsi_e->e_private = NULL;
 
        if ( eid->eid_oc == NULL ) {
                eid->eid_oc = backsql_id2oc( bsi->bsi_op->o_bd->be_private,
                        eid->eid_oc_id );
+               if ( eid->eid_oc == NULL ) {
+                       Debug( LDAP_DEBUG_TRACE,
+                               "backsql_id2entry(): unable to fetch objectClass with id=%lu for entry id=" BACKSQL_IDFMT " dn=\"%s\"\n",
+                               eid->eid_oc_id, BACKSQL_IDARG(eid->eid_id),
+                               eid->eid_dn.bv_val );
+                       return LDAP_OTHER;
+               }
        }
        bsi->bsi_oc = eid->eid_oc;
        bsi->bsi_c_eid = eid;
 
+       ber_dupbv_x( &bsi->bsi_e->e_name, &eid->eid_dn, op->o_tmpmemctx );
+       ber_dupbv_x( &bsi->bsi_e->e_nname, &eid->eid_ndn, op->o_tmpmemctx );
+
 #ifndef BACKSQL_ARBITRARY_KEY  
        /* FIXME: unused */
        bsi->bsi_e->e_id = eid->eid_id;