From: Ondřej Kuzník Date: Thu, 6 May 2021 08:43:32 +0000 (+0100) Subject: ITS#6467 Handle syncrepl searches with base of "" X-Git-Tag: OPENLDAP_REL_ENG_2_6_0~218 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=efb84b3e9bdeca26fa2be81ba44adb5a0eac478b;p=thirdparty%2Fopenldap.git ITS#6467 Handle syncrepl searches with base of "" --- diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 231f73700d..1a87390e88 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -2256,6 +2256,11 @@ syncprov_play_accesslog( Operation *op, SlapReply *rs, sync_control *srs, } filter_escape_value_x( &op->o_req_ndn, &basedn, fop.o_tmpmemctx ); + /* filter_escape_value_x sets output to BVNULL if input value is empty, + * supply our own copy */ + if ( BER_BVISEMPTY( &basedn ) ) { + basedn.bv_val = ""; + } fop.o_req_ndn = fop.o_req_dn = si->si_logbase; fop.ors_filterstr.bv_val = fop.o_tmpalloc( filterpattern.bv_len + @@ -2268,9 +2273,12 @@ syncprov_play_accesslog( Operation *op, SlapReply *rs, sync_control *srs, "prepared filter '%s', base='%s'\n", op->o_log_prefix, fop.ors_filterstr.bv_val, si->si_logbase.bv_val ); f = str2filter_x( &fop, fop.ors_filterstr.bv_val ); + assert( f != NULL ); fop.ors_filter = f; - fop.o_tmpfree( basedn.bv_val, fop.o_tmpmemctx ); + if ( !BER_BVISEMPTY( &basedn ) ) { + fop.o_tmpfree( basedn.bv_val, fop.o_tmpmemctx ); + } be_entry_release_rw( &fop, e, 0 ); /*