From: Ondřej Kuzník Date: Mon, 6 Dec 2021 15:58:54 +0000 (+0000) Subject: ITS#9758 Make sure we don't end up with duplicates in entry X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d908bcd896dd74894f48fed9398725195b54447;p=thirdparty%2Fopenldap.git ITS#9758 Make sure we don't end up with duplicates in entry --- diff --git a/servers/slapd/back-sock/config.c b/servers/slapd/back-sock/config.c index 50ed5d6b00..4ae1bdf47f 100644 --- a/servers/slapd/back-sock/config.c +++ b/servers/slapd/back-sock/config.c @@ -214,6 +214,10 @@ bs_cf_gen( ConfigArgs *c ) if ( verbs_to_mask( c->argc, c->argv, bs_exts, &adds ) ) { return LDAP_INVALID_SYNTAX; } + /* Tolerate overlaps in slapd.conf */ + if ( c->op != SLAP_CONFIG_ADD && adds & si->si_extensions ) { + return LDAP_TYPE_OR_VALUE_EXISTS; + } si->si_extensions |= adds; return 0; } @@ -222,6 +226,10 @@ bs_cf_gen( ConfigArgs *c ) if ( verbs_to_mask( c->argc, c->argv, ov_ops, &adds ) ) { return LDAP_INVALID_SYNTAX; } + /* Tolerate overlaps in slapd.conf */ + if ( c->op != SLAP_CONFIG_ADD && adds & si->si_ops ) { + return LDAP_TYPE_OR_VALUE_EXISTS; + } si->si_ops |= adds; return 0; } @@ -230,6 +238,10 @@ bs_cf_gen( ConfigArgs *c ) if ( verbs_to_mask( c->argc, c->argv, ov_resps, &adds ) ) { return LDAP_INVALID_SYNTAX; } + /* Tolerate overlaps in slapd.conf */ + if ( c->op != SLAP_CONFIG_ADD && adds & si->si_resps ) { + return LDAP_TYPE_OR_VALUE_EXISTS; + } si->si_resps |= adds; return 0; }