From 2028cb473609bcdd5cfe71a888586c03d0eb93db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Tue, 7 Apr 2026 16:23:23 +0100 Subject: [PATCH] ITS#10476 Escape asserted value before pasting into filter --- servers/slapd/overlays/pcache.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index 2efe0b51fa..5358f671cd 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -2688,8 +2688,8 @@ pc_bind_attrs( Operation *op, Entry *e, QueryTemplate *temp, for ( i=0; ibindnattrs; i++ ) { a = attr_find( e->e_attrs, temp->bindfattrs[i] ); if ( a && a->a_vals ) { - vals[i] = a->a_vals[0]; - len += a->a_vals[0].bv_len; + filter_escape_value( &a->a_vals[0], &vals[i] ); + len += vals[i].bv_len; } else { vals[i] = pres; } @@ -2710,6 +2710,12 @@ pc_bind_attrs( Operation *op, Entry *e, QueryTemplate *temp, p1++; } *p2 = '\0'; + + for ( i=0; ibindnattrs; i++ ) { + if ( vals[i].bv_val != pres.bv_val ) { + ch_free( vals[i].bv_val ); + } + } op->o_tmpfree( vals, op->o_tmpmemctx ); /* FIXME: are we sure str2filter_x can't fail?