From efb84b3e9bdeca26fa2be81ba44adb5a0eac478b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Thu, 6 May 2021 09:43:32 +0100 Subject: [PATCH] ITS#6467 Handle syncrepl searches with base of "" --- servers/slapd/overlays/syncprov.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 ); /*