From 439af9ec109e3a11b9ef4add968214a6875896ca Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 20 Dec 2005 22:36:51 +0000 Subject: [PATCH] (Quick)fix UUID naming attributes --- servers/slapd/dn.c | 8 ++++++-- servers/slapd/schema_init.c | 6 +++--- servers/slapd/slap.h | 2 ++ tests/data/dn.out | 4 ++++ tests/data/slapd-dn.conf | 1 + tests/data/test-dn.ldif | 2 ++ tests/data/test.schema | 10 +++++++++- 7 files changed, 27 insertions(+), 6 deletions(-) diff --git a/servers/slapd/dn.c b/servers/slapd/dn.c index 0f4c1e9396..f96ccf50fb 100644 --- a/servers/slapd/dn.c +++ b/servers/slapd/dn.c @@ -386,7 +386,9 @@ LDAPRDN_rewrite( LDAPRDN rdn, unsigned flags, void *ctx ) } else { /* normalization */ validf = ad->ad_type->sat_syntax->ssyn_validate; mr = ad->ad_type->sat_equality; - if( mr ) normf = mr->smr_normalize; + if( mr && (!( mr->smr_usage & SLAP_MR_MUTATION_NORMALIZER ))) { + normf = mr->smr_normalize; + } } if ( validf ) { @@ -516,7 +518,9 @@ LDAPDN_rewrite( LDAPDN dn, unsigned flags, void *ctx ) } else { /* normalization */ validf = ad->ad_type->sat_syntax->ssyn_validate; mr = ad->ad_type->sat_equality; - if( mr ) normf = mr->smr_normalize; + if( mr && (!( mr->smr_usage & SLAP_MR_MUTATION_NORMALIZER ))) { + normf = mr->smr_normalize; + } } if ( validf ) { diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index 505a375c51..d312571139 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -2187,7 +2187,7 @@ UUIDValidate( return LDAP_SUCCESS; } -static int +int UUIDNormalize( slap_mask_t usage, Syntax *syntax, @@ -3873,14 +3873,14 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 1.3.6.1.1.16.2 NAME 'UUIDMatch' " "SYNTAX 1.3.6.1.1.16.1 )", - SLAP_MR_EQUALITY, NULL, + SLAP_MR_EQUALITY | SLAP_MR_MUTATION_NORMALIZER, NULL, NULL, UUIDNormalize, octetStringMatch, octetStringIndexer, octetStringFilter, NULL}, {"( 1.3.6.1.1.16.3 NAME 'UUIDOrderingMatch' " "SYNTAX 1.3.6.1.1.16.1 )", - SLAP_MR_ORDERING, NULL, + SLAP_MR_ORDERING | SLAP_MR_MUTATION_NORMALIZER, NULL, NULL, UUIDNormalize, octetStringOrderingMatch, octetStringIndexer, octetStringFilter, "UUIDMatch"}, diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index 34105c657d..8392477e71 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -511,6 +511,8 @@ typedef struct slap_matching_rule { #define SLAP_MR_HIDE 0x8000U #endif +#define SLAP_MR_MUTATION_NORMALIZER 0x4000U + #define SLAP_MR_TYPE_MASK 0x0F00U #define SLAP_MR_SUBTYPE_MASK 0x00F0U #define SLAP_MR_USAGE 0x000FU diff --git a/tests/data/dn.out b/tests/data/dn.out index bc97e96018..a517c068b2 100644 --- a/tests/data/dn.out +++ b/tests/data/dn.out @@ -21,6 +21,7 @@ member: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0 member: cn=\23John Smith\20,dc=example,dc=net member:: Y249THXEjWnEhw== +member: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example seeAlso: cn=John Smith\2C III,dc=example,dc=net seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net seeAlso: cn=\23John Smith\20,dc=example,dc=net @@ -40,6 +41,7 @@ description: CN=Before\0dAfter,DC=example,DC=net description: CN=\23John Smith\20,DC=example,DC=net description: CN=\#John Smith\ ,DC=example,DC=net description: CN=Lu\C4\8Di\C4\87 +description: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,DC=Example dn: cn=Unescaped Equals,ou=LDAPv3,dc=example,dc=com objectClass: groupOfNames @@ -120,6 +122,7 @@ member: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net member:: Y249QmVmb3JlDUFmdGVyLGRjPWV4YW1wbGUsZGM9bmV0 member: cn=\23John Smith\20,dc=example,dc=net member:: Y249THXEjWnEhw== +member: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example seeAlso: cn=John Smith\2C III,dc=example,dc=net seeAlso: ou=Sales\3B Data\2BAlgorithms,dc=example,dc=net seeAlso: cn=\23John Smith\20,dc=example,dc=net @@ -139,6 +142,7 @@ description: CN=Before\0dAfter,DC=example,DC=net description: CN=\23John Smith\20,DC=example,DC=net description: CN=\#John Smith\ ,DC=example,DC=net description: CN=Lu\C4\8Di\C4\87 +description: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,dc=Example dn: cn=Name and Optional UID,ou=Related Syntaxes,dc=example,dc=com objectClass: groupOfUniqueNames diff --git a/tests/data/slapd-dn.conf b/tests/data/slapd-dn.conf index 10e02bb60b..d05e9f53b8 100644 --- a/tests/data/slapd-dn.conf +++ b/tests/data/slapd-dn.conf @@ -18,6 +18,7 @@ include @SCHEMADIR@/cosine.schema include @SCHEMADIR@/inetorgperson.schema include @SCHEMADIR@/openldap.schema include @SCHEMADIR@/nis.schema +include @DATADIR@/test.schema # pidfile @TESTDIR@/slapd.1.pid diff --git a/tests/data/test-dn.ldif b/tests/data/test-dn.ldif index 74c66ab3f1..66730d1e41 100644 --- a/tests/data/test-dn.ldif +++ b/tests/data/test-dn.ldif @@ -24,6 +24,7 @@ member: OU=Sales\; Data\+Algorithms,DC=example,DC=net member: CN=Before\0dAfter,DC=example,DC=net member: CN=\23John Smith\20,DC=example,DC=net member: CN=Lu\C4\8Di\C4\87 +member: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,DC=Example # DN forms already defined as "member" in a different string representation seeAlso: CN=John Smith\2C III,DC=example,DC=net seeAlso: OU=Sales\3B Data\2BAlgorithms,DC=example,DC=net @@ -46,6 +47,7 @@ description: CN=Before\0dAfter,DC=example,DC=net description: CN=\23John Smith\20,DC=example,DC=net description: CN=\#John Smith\ ,DC=example,DC=net description: CN=Lu\C4\8Di\C4\87 +description: testUUID=597ae2f6-16a6-1027-98f4-d28b5365dc14,DC=Example dn: cn=Should Succeed,ou=LDAPv3,dc=example,dc=com objectClass: groupOfNames diff --git a/tests/data/test.schema b/tests/data/test.schema index 3e37b20613..adf0e2f1ce 100644 --- a/tests/data/test.schema +++ b/tests/data/test.schema @@ -36,7 +36,6 @@ attributetype ( 1.3.6.1.4.1.4203.666.1.36 SYNTAX 1.2.826.0.1.3344810.7.1 ) # generalized time testing - attributetype ( 1.3.6.1.4.1.4203.666.1.37 name 'testTime' equality generalizedTimeMatch @@ -44,6 +43,14 @@ attributetype ( 1.3.6.1.4.1.4203.666.1.37 syntax 1.3.6.1.4.1.1466.115.121.1.24 single-value ) +# for UUID testing +attributetype ( 1.3.6.1.4.1.4203.666.1.56 + name 'testUUID' + equality UUIDMatch + ordering UUIDOrderingMatch + syntax 1.3.6.1.1.16.1 ) + +# for obsolete testing attributetype ( 1.3.6.1.4.1.4203.666.1.38 name 'testObsolete' obsolete @@ -59,3 +66,4 @@ objectClass ( 1.3.6.1.3.1.4203.666.3.16 name 'obsoletePerson' obsolete auxiliary may ( testObsolete ) ) + -- 2.39.5