From: Howard Chu Date: Mon, 10 Aug 2020 15:40:54 +0000 (+0100) Subject: For ITS#9309 fix check for duplicate overlays X-Git-Tag: OPENLDAP_REL_ENG_2_4_51~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c6031c2ac96b9a1e5054e667c88c6c3c1ded6ea;p=thirdparty%2Fopenldap.git For ITS#9309 fix check for duplicate overlays and pass error message back to frontend --- diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c index 44eae68796..b0b5fd099a 100644 --- a/servers/slapd/backover.c +++ b/servers/slapd/backover.c @@ -1314,16 +1314,16 @@ overlay_config( BackendDB *be, const char *ov, int idx, BackendInfo **res, Confi if ( be->bd_info == frontendDB->bd_info || SLAP_ISGLOBALOVERLAY( be ) ) { isglobal = 1; if ( on->on_bi.bi_flags & SLAPO_BFLAG_DBONLY ) { - Debug( LDAP_DEBUG_ANY, "overlay_config(): " - "overlay \"%s\" cannot be global.\n", - ov, 0, 0 ); + snprintf( cr->msg, sizeof( cr->msg ), "overlay_config(): " + "overlay \"%s\" cannot be global.", ov ); + Debug( LDAP_DEBUG_ANY, "%s\n", cr->msg, 0, 0 ); return 1; } } else if ( on->on_bi.bi_flags & SLAPO_BFLAG_GLOBONLY ) { - Debug( LDAP_DEBUG_ANY, "overlay_config(): " - "overlay \"%s\" can only be global.\n", - ov, 0, 0 ); + snprintf( cr->msg, sizeof( cr->msg ), "overlay_config(): " + "overlay \"%s\" can only be global.", ov ); + Debug( LDAP_DEBUG_ANY, "%s\n", cr->msg, 0, 0 ); return 1; } @@ -1386,10 +1386,10 @@ overlay_config( BackendDB *be, const char *ov, int idx, BackendInfo **res, Confi } else { if ( overlay_is_inst( be, ov ) ) { - if ( SLAPO_SINGLE( be ) ) { - Debug( LDAP_DEBUG_ANY, "overlay_config(): " - "overlay \"%s\" already in list\n", - ov, 0, 0 ); + if ( on->on_bi.bi_flags & SLAPO_BFLAG_SINGLE ) { + snprintf( cr->msg, sizeof( cr->msg ), "overlay_config(): " + "overlay \"%s\" already in list", ov ); + Debug( LDAP_DEBUG_ANY, "%s\n", cr->msg, 0, 0 ); return 1; } }