46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
From 2b73c3596e724f314b0e09cf6209e0151260f7e5 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Bokovoy <abokovoy@redhat.com>
|
|
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 <abokovoy@redhat.com>
|
|
---
|
|
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
|
|
|