mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-18 11:05:48 +08:00
ITS#6758 Reset dangerous REP_ENTRY_* flags.
If SlapReply.sr_un cannot contain an entry but does or soon may contain another member than sru_search: Ensure nothing will see leftover REP_ENTRY_* flags and try to clean up the "entry" there.
This commit is contained in:
parent
b26c767ed6
commit
bdb078a778
@ -90,6 +90,9 @@ ldap_back_extended(
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */
|
||||||
|
|
||||||
for ( i = 0; exop_table[i].extended != NULL; i++ ) {
|
for ( i = 0; exop_table[i].extended != NULL; i++ ) {
|
||||||
if ( bvmatch( &exop_table[i].oid, &op->oq_extended.rs_reqoid ) )
|
if ( bvmatch( &exop_table[i].oid, &op->oq_extended.rs_reqoid ) )
|
||||||
{
|
{
|
||||||
@ -397,4 +400,3 @@ retry:
|
|||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,6 +173,9 @@ ldap_back_search(
|
|||||||
/* FIXME: shouldn't this be null? */
|
/* FIXME: shouldn't this be null? */
|
||||||
const char *save_matched = rs->sr_matched;
|
const char *save_matched = rs->sr_matched;
|
||||||
|
|
||||||
|
rs_assert_ready( rs );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia, we can set rs = non-entry */
|
||||||
|
|
||||||
if ( !ldap_back_dobind( &lc, op, rs, LDAP_BACK_SENDERR ) ) {
|
if ( !ldap_back_dobind( &lc, op, rs, LDAP_BACK_SENDERR ) ) {
|
||||||
return rs->sr_err;
|
return rs->sr_err;
|
||||||
}
|
}
|
||||||
|
@ -700,6 +700,9 @@ meta_back_search( Operation *op, SlapReply *rs )
|
|||||||
SlapReply *candidates = NULL;
|
SlapReply *candidates = NULL;
|
||||||
int do_taint = 0;
|
int do_taint = 0;
|
||||||
|
|
||||||
|
rs_assert_ready( rs );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia, we can set rs = non-entry */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* controls are set in ldap_back_dobind()
|
* controls are set in ldap_back_dobind()
|
||||||
*
|
*
|
||||||
|
@ -728,6 +728,10 @@ send_ldap_disconnect( Operation *op, SlapReply *rs )
|
|||||||
rs->sr_err, rs->sr_text ? rs->sr_text : "", NULL );
|
rs->sr_err, rs->sr_text ? rs->sr_text : "", NULL );
|
||||||
assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) );
|
assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) );
|
||||||
|
|
||||||
|
/* TODO: Flush the entry if sr_type == REP_SEARCH/REP_SEARCHREF? */
|
||||||
|
RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */
|
||||||
|
|
||||||
rs->sr_type = REP_EXTENDED;
|
rs->sr_type = REP_EXTENDED;
|
||||||
rs->sr_rspdata = NULL;
|
rs->sr_rspdata = NULL;
|
||||||
|
|
||||||
@ -833,6 +837,9 @@ send_ldap_sasl( Operation *op, SlapReply *rs )
|
|||||||
rs->sr_err,
|
rs->sr_err,
|
||||||
rs->sr_sasldata ? (long) rs->sr_sasldata->bv_len : -1, NULL );
|
rs->sr_sasldata ? (long) rs->sr_sasldata->bv_len : -1, NULL );
|
||||||
|
|
||||||
|
RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */
|
||||||
|
|
||||||
rs->sr_type = REP_SASL;
|
rs->sr_type = REP_SASL;
|
||||||
rs->sr_tag = slap_req2res( op->o_tag );
|
rs->sr_tag = slap_req2res( op->o_tag );
|
||||||
rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
|
rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
|
||||||
@ -854,6 +861,9 @@ slap_send_ldap_extended( Operation *op, SlapReply *rs )
|
|||||||
rs->sr_rspoid ? rs->sr_rspoid : "",
|
rs->sr_rspoid ? rs->sr_rspoid : "",
|
||||||
rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
|
rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
|
||||||
|
|
||||||
|
RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */
|
||||||
|
|
||||||
rs->sr_type = REP_EXTENDED;
|
rs->sr_type = REP_EXTENDED;
|
||||||
rs->sr_tag = slap_req2res( op->o_tag );
|
rs->sr_tag = slap_req2res( op->o_tag );
|
||||||
rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
|
rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0;
|
||||||
@ -875,6 +885,9 @@ slap_send_ldap_intermediate( Operation *op, SlapReply *rs )
|
|||||||
rs->sr_rspoid ? rs->sr_rspoid : "",
|
rs->sr_rspoid ? rs->sr_rspoid : "",
|
||||||
rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
|
rs->sr_rspdata != NULL ? rs->sr_rspdata->bv_len : 0 );
|
||||||
|
|
||||||
|
RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) );
|
||||||
|
rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */
|
||||||
|
|
||||||
rs->sr_type = REP_INTERMEDIATE;
|
rs->sr_type = REP_INTERMEDIATE;
|
||||||
rs->sr_tag = LDAP_RES_INTERMEDIATE;
|
rs->sr_tag = LDAP_RES_INTERMEDIATE;
|
||||||
rs->sr_msgid = op->o_msgid;
|
rs->sr_msgid = op->o_msgid;
|
||||||
|
Loading…
Reference in New Issue
Block a user