From 0a7fe7c6e18759459499f468443ded4313ebdeab Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Wed, 9 Jul 2025 12:08:09 +0300 Subject: [PATCH] Issue 6857 - uiduniq: allow specifying match rules in the filter Allow uniqueness plugin to work with attributes where uniqueness should be enforced using different matching rule than the one defined for the attribute itself. Since uniqueness plugin configuration can contain multiple attributes, add matching rule right to the attribute as it is used in the LDAP rule (e.g. 'attribute:caseIgnoreMatch:' to force 'attribute' to be searched with case-insensitive matching rule instead of the original matching rule. Fixes: https://github.com/389ds/389-ds-base/issues/6857 Signed-off-by: Alexander Bokovoy --- ldap/servers/plugins/uiduniq/uid.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ldap/servers/plugins/uiduniq/uid.c b/ldap/servers/plugins/uiduniq/uid.c index 053af4f9d..887e79d78 100644 --- a/ldap/servers/plugins/uiduniq/uid.c +++ b/ldap/servers/plugins/uiduniq/uid.c @@ -1030,7 +1030,14 @@ preop_add(Slapi_PBlock *pb) } for (i = 0; attrNames && attrNames[i]; i++) { + char *attr_match = strchr(attrNames[i], ':'); + if (attr_match != NULL) { + attr_match[0] = '\0'; + } err = slapi_entry_attr_find(e, attrNames[i], &attr); + if (attr_match != NULL) { + attr_match[0] = ':'; + } if (!err) { /* * Passed all the requirements - this is an operation we -- 2.49.0