Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > cdedc712ab3cd61c674716aaa506265d > files > 36

openldap-2.4.38-1.3.mga4.src.rpm

From: Howard Chu <hyc@openldap.org>
Date: Tue, 19 Nov 2013 04:39:35 +0000 (-0800)
Subject: ITS#7750 fix olcDbConfig modification
X-Git-Url: http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commitdiff_plain;h=a6e63a158d220436d208ccbac26daf8c90ff0215

ITS#7750 fix olcDbConfig modification
---

diff --git a/servers/slapd/back-bdb/config.c b/servers/slapd/back-bdb/config.c
index 7a7d72b..85b1842 100644
--- a/servers/slapd/back-bdb/config.c
+++ b/servers/slapd/back-bdb/config.c
@@ -324,6 +324,7 @@ bdb_cf_cleanup( ConfigArgs *c )
 {
 	struct bdb_info *bdb = c->be->be_private;
 	int rc = 0;
+	BerVarray bva;
 
 	if ( bdb->bi_flags & BDB_DEL_INDEX ) {
 		bdb_attr_flush( bdb );
@@ -332,16 +333,22 @@ bdb_cf_cleanup( ConfigArgs *c )
 
 	if ( bdb->bi_flags & BDB_RE_OPEN ) {
 		bdb->bi_flags ^= BDB_RE_OPEN;
+		bva = bdb->bi_db_config;
+		bdb->bi_db_config = NULL;
 		rc = c->be->bd_info->bi_db_close( c->be, &c->reply );
 		if ( rc == 0 ) {
 			if ( bdb->bi_flags & BDB_UPD_CONFIG ) {
-				if ( bdb->bi_db_config ) {
+				if ( bva ) {
 					int i;
 					FILE *f = fopen( bdb->bi_db_config_path, "w" );
 					if ( f ) {
+						bdb->bi_db_config = bva;
+						bva = NULL;
 						for (i=0; bdb->bi_db_config[i].bv_val; i++)
 							fprintf( f, "%s\n", bdb->bi_db_config[i].bv_val );
 						fclose( f );
+					} else {
+						ber_bvarray_free( bva );
 					}
 				} else {
 					unlink( bdb->bi_db_config_path );