From 2b73c3596e724f314b0e09cf6209e0151260f7e5 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 5b763b551..15cf88477 100644 --- a/ldap/servers/plugins/uiduniq/uid.c +++ b/ldap/servers/plugins/uiduniq/uid.c @@ -1031,7 +1031,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