diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c index eb0bf89c19..1994ba7ff8 100644 --- a/servers/slapd/backover.c +++ b/servers/slapd/backover.c @@ -273,6 +273,7 @@ over_access_allowed( for ( ; on; on = on->on_next ) { if ( on->on_bi.bi_access_allowed ) { + /* NOTE: do not copy the structure until required */ if ( !SLAP_ISOVERLAY( op->o_bd ) ) { db = *op->o_bd; db.be_flags |= SLAP_DBFLAG_OVERLAY; @@ -287,6 +288,11 @@ over_access_allowed( } if ( rc == SLAP_CB_CONTINUE && oi->oi_orig->bi_access_allowed ) { + /* NOTE: do not copy the structure until requiredy */ + /* NOTE: by default, oi->oi_orig->bi_access_allowed == NULL; + * only backends that implement a specific hook + * should store it there; by default, slap_access_allowed() + * is invoked if oi->oi_orig->bi_access_allowed == NULL */ if ( !SLAP_ISOVERLAY( op->o_bd ) ) { db = *op->o_bd; db.be_flags |= SLAP_DBFLAG_OVERLAY;