From: Quanah Gibson-Mount Date: Mon, 3 Jan 2011 23:47:12 +0000 (+0000) Subject: ITS#6532 X-Git-Tag: OPENLDAP_REL_ENG_2_4_24~182 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=251e8b4006c1885c2d690a3d1dea70d8200ea8a7;p=openldap ITS#6532 --- diff --git a/CHANGES b/CHANGES index 57f793a635..f793a460d2 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,7 @@ OpenLDAP 2.4.24 Engineering Fixed slapd to free controls if needed (ITS#6629) Fixed slapd filter leak (ITS#6635) Fixed slapd matching rules for strict ordering (ITS#6722) + Fixed slapd extensible match for ordering rules (ITS#6532) Fixed slapd when first acl is value dependent (ITS#6693) Fixed slapd modify to return actual error (ITS#6581) Fixed slapd sortvals of attributes with 1 value (ITS#6715) diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index c7c00cd4ff..a6137e3741 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -514,6 +514,9 @@ octetStringOrderingMatch( ? (int) v_len - (int) av_len : v_len < av_len ? -1 : v_len > av_len; + if ( flags & SLAP_MR_EXT ) + match = (match >= 0); + *matchp = match; return LDAP_SUCCESS; } @@ -2413,6 +2416,9 @@ integerMatch( if( vsign < 0 ) match = -match; } + if ( (flags & SLAP_MR_EXT) && (mr->smr_usage & SLAP_MR_ORDERING) ) + match = (match >= 0); + *matchp = match; return LDAP_SUCCESS; } @@ -5617,6 +5623,9 @@ generalizedTimeOrderingMatch( (v_len < av_len ? v_len : av_len) - 1 ); if ( match == 0 ) match = v_len - av_len; + if ( flags & SLAP_MR_EXT ) + match = (match >= 0); + *matchp = match; return LDAP_SUCCESS; } @@ -6390,7 +6399,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.3 NAME 'caseIgnoreOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", - SLAP_MR_ORDERING, directoryStringSyntaxes, + SLAP_MR_ORDERING | SLAP_MR_EXT, directoryStringSyntaxes, NULL, UTF8StringNormalize, octetStringOrderingMatch, NULL, NULL, "caseIgnoreMatch" }, @@ -6411,7 +6420,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.6 NAME 'caseExactOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", - SLAP_MR_ORDERING, directoryStringSyntaxes, + SLAP_MR_ORDERING | SLAP_MR_EXT, directoryStringSyntaxes, NULL, UTF8StringNormalize, octetStringOrderingMatch, NULL, NULL, "caseExactMatch" }, @@ -6432,7 +6441,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.9 NAME 'numericStringOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 )", - SLAP_MR_ORDERING, NULL, + SLAP_MR_ORDERING | SLAP_MR_EXT, NULL, NULL, numericStringNormalize, octetStringOrderingMatch, NULL, NULL, "numericStringMatch" }, @@ -6473,7 +6482,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.15 NAME 'integerOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", - SLAP_MR_ORDERING | SLAP_MR_ORDERED_INDEX, NULL, + SLAP_MR_ORDERING | SLAP_MR_EXT | SLAP_MR_ORDERED_INDEX, NULL, NULL, NULL, integerMatch, NULL, NULL, "integerMatch" }, @@ -6494,7 +6503,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.18 NAME 'octetStringOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )", - SLAP_MR_ORDERING, NULL, + SLAP_MR_ORDERING | SLAP_MR_EXT, NULL, NULL, NULL, octetStringOrderingMatch, NULL, NULL, "octetStringMatch" }, @@ -6547,7 +6556,7 @@ static slap_mrule_defs_rec mrule_defs[] = { {"( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )", - SLAP_MR_ORDERING | SLAP_MR_ORDERED_INDEX, NULL, + SLAP_MR_ORDERING | SLAP_MR_EXT | SLAP_MR_ORDERED_INDEX, NULL, NULL, generalizedTimeNormalize, generalizedTimeOrderingMatch, NULL, NULL, "generalizedTimeMatch" },