X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-sql%2Foperational.c;h=e99741a6d9b4ae530e504a5f971f32c889f661cf;hb=910ee45f0188c9b808a508e49af47a8c83e23422;hp=dbc1d88b6871814a5507eb8fc83ec150de4539e3;hpb=014ee81c340d03011ba92d940c7936294f6d12f4;p=openldap diff --git a/servers/slapd/back-sql/operational.c b/servers/slapd/back-sql/operational.c index dbc1d88b68..e99741a6d9 100644 --- a/servers/slapd/back-sql/operational.c +++ b/servers/slapd/back-sql/operational.c @@ -83,15 +83,17 @@ backsql_operational_entryCSN( Operation *op ) BER_BVZERO( &a->a_vals[ 1 ] ); #ifdef BACKSQL_SYNCPROV - if ( op->o_sync && op->o_tag == LDAP_REQ_SEARCH ) { - assert( op->o_private ); + if ( op->o_sync && op->o_tag == LDAP_REQ_SEARCH && op->o_private != NULL ) { + assert( op->o_private != NULL ); entryCSN = *((struct berval *)op->o_private); } else #endif /* BACKSQL_SYNCPROV */ { - slap_get_csn( op, csnbuf, sizeof(csnbuf), &entryCSN, 0 ); + entryCSN.bv_val = csnbuf; + entryCSN.bv_len = sizeof( csnbuf ); + slap_get_csn( op, &entryCSN, 0 ); } ber_dupbv( &a->a_vals[ 0 ], &entryCSN ); @@ -158,13 +160,13 @@ backsql_operational( && !got[ BACKSQL_OP_HASSUBORDINATES ] && attr_find( rs->sr_entry->e_attrs, slap_schema.si_ad_hasSubordinates ) == NULL ) { - rc = backsql_has_children( bi, dbh, &rs->sr_entry->e_nname ); + rc = backsql_has_children( op, dbh, &rs->sr_entry->e_nname ); switch( rc ) { case LDAP_COMPARE_TRUE: case LDAP_COMPARE_FALSE: *ap = slap_operational_hasSubordinate( rc == LDAP_COMPARE_TRUE ); - assert( *ap ); + assert( *ap != NULL ); ap = &(*ap)->a_next; rc = 0; break; @@ -180,11 +182,10 @@ backsql_operational( && !got[ BACKSQL_OP_ENTRYUUID ] && attr_find( rs->sr_entry->e_attrs, slap_schema.si_ad_entryUUID ) == NULL ) { - backsql_srch_info bsi; + backsql_srch_info bsi = { 0 }; rc = backsql_init_search( &bsi, &rs->sr_entry->e_nname, LDAP_SCOPE_BASE, - SLAP_NO_LIMIT, SLAP_NO_LIMIT, (time_t)(-1), NULL, dbh, op, rs, NULL, BACKSQL_ISF_GET_ID ); if ( rc != LDAP_SUCCESS ) { @@ -196,7 +197,8 @@ backsql_operational( *ap = backsql_operational_entryUUID( bi, &bsi.bsi_base_id ); - (void)backsql_free_entryID( &bsi.bsi_base_id, 0 ); + (void)backsql_free_entryID( op, &bsi.bsi_base_id, 0 ); + if ( bsi.bsi_attrs != NULL ) { op->o_tmpfree( bsi.bsi_attrs, op->o_tmpmemctx ); }