From: Ondřej Kuzník Date: Wed, 17 Mar 2021 16:17:27 +0000 (+0000) Subject: ITS#9016 Check confdir is empty before generating from scratch X-Git-Tag: OPENLDAP_REL_ENG_2_5_3BETA~3^2~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c12993fbe107970907f4ec0d116acc25f2aed50;p=thirdparty%2Fopenldap.git ITS#9016 Check confdir is empty before generating from scratch --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 97656dd475..645ecf1478 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -4520,6 +4521,21 @@ config_setup_ldif( BackendDB *be, const char *dir, int readit ) { rc = op->o_bd->be_add( op, &rs ); } ldap_pvt_thread_pool_context_reset( thrctx ); + } else { + /* ITS#9016 Check directory is empty (except perhaps hidden files) */ + DIR *dir_of_path; + struct dirent *entry; + + dir_of_path = opendir( dir ); + while ( (entry = readdir( dir_of_path )) != NULL ) { + if ( entry->d_name[0] != '.' ) { + Debug( LDAP_DEBUG_ANY, "config_setup_ldif: " + "expected directory %s to be empty!\n", + dir ); + rc = LDAP_ALREADY_EXISTS; + break; + } + } } /* ITS#4194 - only use if it's present, or we're converting. */