From: Kurt Zeilenga Date: Thu, 29 Jun 2000 19:00:17 +0000 (+0000) Subject: Initial, very unforgiving, booleanValidate and booleanMatch. X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~2512 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8d4ec58151b75c3152e73acb51a13d541ff43789;p=openldap Initial, very unforgiving, booleanValidate and booleanMatch. --- diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index ec4da72eb2..1c3d4b2624 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -22,7 +22,6 @@ /* unimplemented validators */ #define bitStringValidate NULL -#define booleanValidate NULL /* recycled normalization routines */ #define faxNumberNormalize numericStringNormalize @@ -32,10 +31,8 @@ /* unimplemented normalizers */ #define bitStringNormalize NULL -#define booleanNormalize NULL /* unimplemented pretters */ -#define booleanPretty NULL #define dnPretty NULL #define integerPretty NULL @@ -301,6 +298,49 @@ blobValidate( return LDAP_SUCCESS; } +/* + * Handling boolean syntax and matching is quite rigid. + * A more flexible approach would be to allow a variety + * of strings to be normalized and prettied into TRUE + * and FALSE. + */ +static int +booleanValidate( + Syntax *syntax, + struct berval *in ) +{ + /* very unforgiving validation, requires no normalization + * before simplistic matching + */ + + if( in->bv_len == 4 ) { + if( !memcmp( in->bv_val, "TRUE", 4 ) ) { + return LDAP_SUCCESS; + } + } else if( in->bv_len == 5 ) { + if( !memcmp( in->bv_val, "FALSE", 5 ) ) { + return LDAP_SUCCESS; + } + } + + return LDAP_INVALID_SYNTAX; +} + +static int +booleanMatch( + int *matchp, + unsigned flags, + Syntax *syntax, + MatchingRule *mr, + struct berval *value, + void *assertedValue ) +{ + /* simplistic matching allowed by rigid validation */ + struct berval *asserted = (struct berval *) assertedValue; + *matchp = value->bv_len != asserted->bv_len; + return LDAP_SUCCESS; +} + static int UTF8StringValidate( Syntax *syntax, @@ -1503,7 +1543,7 @@ struct syntax_defs_rec syntax_defs[] = { {"( 1.3.6.1.4.1.1466.115.121.1.6 DESC 'Bit String' )", 0, bitStringValidate, bitStringNormalize, NULL }, {"( 1.3.6.1.4.1.1466.115.121.1.7 DESC 'Boolean' )", - 0, booleanValidate, booleanNormalize, booleanPretty}, + 0, booleanValidate, NULL, NULL}, {"( 1.3.6.1.4.1.1466.115.121.1.8 DESC 'Certificate' " X_BINARY X_NOT_H_R ")", SLAP_SYNTAX_BINARY|SLAP_SYNTAX_BER, berValidate, NULL, NULL}, @@ -1718,6 +1758,11 @@ struct mrule_defs_rec mrule_defs[] = { SLAP_MR_SUBSTR | SLAP_MR_EXT, NULL, NULL, caseIgnoreListSubstringsMatch, NULL, NULL}, + {"( 2.5.13.13 NAME 'booleanMatch' " + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )", + SLAP_MR_EQUALITY | SLAP_MR_EXT, + NULL, NULL, booleanMatch, NULL, NULL}, + {"( 2.5.13.14 NAME 'integerMatch' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )", SLAP_MR_EQUALITY | SLAP_MR_EXT,