X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fschema_prep.c;h=ed5b819b574a475599866408b66741d4c1f6d4f4;hb=919274432b0603c7726ca398ad9e11bb08c1a0e2;hp=0566e1333bddd534f374d36ebf0dced3dac0f283;hpb=ecfb311f8f2b4f8b8e74c0ee88b8ef572e792c99;p=openldap diff --git a/servers/slapd/schema_prep.c b/servers/slapd/schema_prep.c index 0566e1333b..ed5b819b57 100644 --- a/servers/slapd/schema_prep.c +++ b/servers/slapd/schema_prep.c @@ -150,6 +150,9 @@ static int objectSubClassIndexer( #endif } + ocvalues[i].bv_val = NULL; + ocvalues[i].bv_len = 0; + /* expand values */ for( i=0; isoc_cname.bv_val ); #endif #endif - if( ber_bvcmp( &ocvalues[k], &sup->soc_cname ) == 0 ) { + if( bvmatch( &ocvalues[k], &sup->soc_cname ) ) { found++; break; } @@ -447,6 +450,7 @@ static struct slap_schema_ad_map { { "entryCSN", "( 1.3.6.1.4.1.4203.666.1.7 NAME 'entryCSN' " "DESC 'LCUP/LDUP: change sequence number' " "EQUALITY octetStringMatch " + "ORDERING octetStringOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} " "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )", NULL, SLAP_AT_HIDE, @@ -516,7 +520,7 @@ static struct slap_schema_ad_map { offsetof(struct slap_internal_schema, si_ad_monitorContext) }, { "vendorName", "( 1.3.6.1.1.4 NAME 'vendorName' " "DESC 'RFC3045: name of implementation vendor' " - "EQUALITY 1.3.6.1.4.1.1466.109.114.1 " + "EQUALITY caseExactMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " "SINGLE-VALUE NO-USER-MODIFICATION " "USAGE dSAOperation )", @@ -525,7 +529,7 @@ static struct slap_schema_ad_map { offsetof(struct slap_internal_schema, si_ad_vendorName) }, { "vendorVersion", "( 1.3.6.1.1.5 NAME 'vendorVersion' " "DESC 'RFC3045: version of implementation' " - "EQUALITY 1.3.6.1.4.1.1466.109.114.1 " + "EQUALITY caseExactMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " "SINGLE-VALUE NO-USER-MODIFICATION " "USAGE dSAOperation )", @@ -597,7 +601,7 @@ static struct slap_schema_ad_map { "DESC 'RFC2252: matching rule uses' " "EQUALITY objectIdentifierFirstComponentMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.31 USAGE directoryOperation )", - subentryAttribute, SLAP_AT_HIDE, + subentryAttribute, 0, NULL, NULL, NULL, NULL, NULL, offsetof(struct slap_internal_schema, si_ad_matchingRuleUse) }, @@ -808,7 +812,7 @@ slap_schema_load( void ) *synp = syn_find( syn_map[i].sssm_name ); if( *synp == NULL ) { - fprintf( stderr, "slap_schema_check: " + fprintf( stderr, "slap_schema_load: Syntax: " "No syntax \"%s\" defined in schema\n", syn_map[i].sssm_name ); return LDAP_INVALID_SYNTAX; @@ -824,7 +828,7 @@ slap_schema_load( void ) *mrp = mr_find( mr_map[i].ssmm_name ); if( *mrp == NULL ) { - fprintf( stderr, "slap_schema_check: " + fprintf( stderr, "slap_schema_load: MatchingRule: " "No matching rule \"%s\" defined in schema\n", mr_map[i].ssmm_name ); return LDAP_INAPPROPRIATE_MATCHING; @@ -842,22 +846,22 @@ slap_schema_load( void ) &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { fprintf( stderr, - "slap_schema_load: %s: %s before %s\n", + "slap_schema_load: AttributeType \"%s\": %s before %s\n", ad_map[i].ssam_name, ldap_scherr2str(code), err ); return code; } if ( at->at_oid == NULL ) { fprintf( stderr, "slap_schema_load: " - "attributeType \"%s\" has no OID\n", + "AttributeType \"%s\": no OID\n", ad_map[i].ssam_name ); return LDAP_OTHER; } code = at_add( at, &err ); if ( code ) { - fprintf( stderr, "slap_schema_load: " - "%s: %s: \"%s\"\n", + fprintf( stderr, "slap_schema_load: AttributeType " + "\"%s\": %s: \"%s\"\n", ad_map[i].ssam_name, scherr2str(code), err ); return code; } @@ -874,8 +878,8 @@ slap_schema_load( void ) rc = slap_str2ad( ad_map[i].ssam_name, adp, &text ); if( rc != LDAP_SUCCESS ) { - fprintf( stderr, "slap_schema_check: " - "No attribute \"%s\" defined in schema\n", + fprintf( stderr, "slap_schema_load: AttributeType \"%s\": " + "not defined in schema\n", ad_map[i].ssam_name ); return rc; } @@ -927,23 +931,23 @@ slap_schema_load( void ) oc = ldap_str2objectclass( oc_map[i].ssom_defn, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !oc ) { - fprintf( stderr, "slap_schema_load: " - "%s: %s before %s\n", + fprintf( stderr, "slap_schema_load: ObjectClass " + "\"%s\": %s before %s\n", oc_map[i].ssom_name, ldap_scherr2str(code), err ); return code; } if ( oc->oc_oid == NULL ) { - fprintf( stderr, "slap_schema_load: " - "%s: objectclass has no OID\n", + fprintf( stderr, "slap_schema_load: ObjectClass " + "\"%s\": no OID\n", oc_map[i].ssom_name ); return LDAP_OTHER; } code = oc_add(oc,0,&err); if ( code ) { - fprintf( stderr, "slap_schema_load: " - "%s: %s: \"%s\"\n", + fprintf( stderr, "slap_schema_load: ObjectClass " + "\"%s\": %s: \"%s\"\n", oc_map[i].ssom_name, scherr2str(code), err); return code; } @@ -958,8 +962,8 @@ slap_schema_load( void ) *ocp = oc_find( oc_map[i].ssom_name ); if( *ocp == NULL ) { - fprintf( stderr, "slap_schema_check: " - "No objectClass \"%s\" defined in schema\n", + fprintf( stderr, "slap_schema_load: " + "ObjectClass \"%s\": not defined in schema\n", oc_map[i].ssom_name ); return LDAP_OBJECT_CLASS_VIOLATION; } @@ -985,6 +989,13 @@ slap_schema_check( void ) /* we should only be called once after schema_init() was called */ assert( schema_init_done == 1 ); + /* + * cycle thru attributeTypes to build matchingRuleUse + */ + if ( matching_rule_use_init() ) { + return LDAP_OTHER; + } + ++schema_init_done; return LDAP_SUCCESS; }