From 176680e8245b495fb4ea3cccd8c2c8e07870e1aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Tue, 16 Dec 2025 13:56:34 +0000 Subject: [PATCH] ITS#10414 Do not replace tool's provided buffer --- servers/slapd/bconfig.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 4d793fde58..3004898cf5 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -8040,6 +8040,8 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) strncmp( e->e_nname.bv_val + STRLENOF( "olcDatabase" ), "=frontend", STRLENOF( "=frontend" ))) { + struct berval message = BER_BVC("autocreation of \"olcDatabase={-1}frontend\" failed"); + memset( &ca, 0, sizeof(ConfigArgs)); ca.be = frontendDB; ca.bi = frontendDB->bd_info; @@ -8061,8 +8063,7 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) op->o_ndn = be->be_rootndn; rc = slap_add_opattrs(op, NULL, NULL, 0, 0); if ( rc != LDAP_SUCCESS ) { - text->bv_val = "autocreation of \"olcDatabase={-1}frontend\" failed"; - text->bv_len = STRLENOF("autocreation of \"olcDatabase={-1}frontend\" failed"); + ber_bvreplace( text, &message ); return NOID; } @@ -8070,8 +8071,7 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) bi->bi_tool_entry_put( &cfb->cb_db, ce, text ) != NOID ) { cfb->cb_got_ldif |= BCONFIG_GOT_FRONTEND; } else { - text->bv_val = "autocreation of \"olcDatabase={-1}frontend\" failed"; - text->bv_len = STRLENOF("autocreation of \"olcDatabase={-1}frontend\" failed"); + ber_bvreplace( text, &message ); return NOID; } } else { @@ -8117,6 +8117,8 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) strncmp( e->e_nname.bv_val + STRLENOF( "olcDatabase" ), "=config", STRLENOF( "=config" )) ) { + struct berval message = BER_BVC("autocreation of \"olcDatabase={0}config\" failed"); + memset( &ca, 0, sizeof(ConfigArgs)); ca.be = LDAP_STAILQ_FIRST( &backendDB ); ca.bi = ca.be->bd_info; @@ -8139,16 +8141,14 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) op->ora_e = ce; rc = slap_add_opattrs(op, NULL, NULL, 0, 0); if ( rc != LDAP_SUCCESS ) { - text->bv_val = "autocreation of \"olcDatabase={0}config\" failed"; - text->bv_len = STRLENOF("autocreation of \"olcDatabase={0}config\" failed"); + ber_bvreplace( text, &message ); return NOID; } if (ce && bi && bi->bi_tool_entry_put && bi->bi_tool_entry_put( &cfb->cb_db, ce, text ) != NOID ) { cfb->cb_got_ldif |= BCONFIG_GOT_CONFIG; } else { - text->bv_val = "autocreation of \"olcDatabase={0}config\" failed"; - text->bv_len = STRLENOF("autocreation of \"olcDatabase={0}config\" failed"); + ber_bvreplace( text, &message ); return NOID; } } else { @@ -8160,7 +8160,9 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text ) config_add_internal( cfb, e, &ca, NULL, NULL, NULL ) == 0 ) return bi->bi_tool_entry_put( &cfb->cb_db, e, text ); else { - ber_str2bv( ca.cr_msg, 0, 0, text ); + struct berval bv; + ber_str2bv( ca.cr_msg, 0, 0, &bv ); + ber_bvreplace( text, &bv ); return NOID; } } -- 2.47.3