X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Frwm.c;h=ebe9815438794af469b9c0120ba30b9f642120ae;hb=64af435895fdfb765b3d2a36f63bba233c4562f0;hp=19c18add906687ad16e8a7f03d43b1fc54743124;hpb=47351e3b5cbb8d32db1342994517c1efc6480d9d;p=openldap diff --git a/servers/slapd/overlays/rwm.c b/servers/slapd/overlays/rwm.c index 19c18add90..ebe9815438 100644 --- a/servers/slapd/overlays/rwm.c +++ b/servers/slapd/overlays/rwm.c @@ -368,7 +368,10 @@ rwm_op_compare( Operation *op, SlapReply *rs ) } if ( mapped_vals[ 0 ].bv_val != op->orc_ava->aa_value.bv_val ) { - ber_bvreplace_x( &op->orc_ava->aa_value, &mapped_vals[0], + /* NOTE: if we get here, rwm_dnattr_rewrite() + * already freed the old value, so now + * it's invalid */ + ber_dupbv_x( &op->orc_ava->aa_value, &mapped_vals[0], op->o_tmpmemctx ); ber_memfree_x( mapped_vals[ 0 ].bv_val, NULL ); }