From: Kurt Zeilenga Date: Sat, 27 May 2000 19:21:28 +0000 (+0000) Subject: Working test001 and test002. X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~2839 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=dab0793d0c91079ceebed4ec1946591aa2b9a6cb;p=openldap Working test001 and test002. --- diff --git a/servers/slapd/back-ldbm/search.c b/servers/slapd/back-ldbm/search.c index ced37b8265..8a09394b3b 100644 --- a/servers/slapd/back-ldbm/search.c +++ b/servers/slapd/back-ldbm/search.c @@ -138,6 +138,7 @@ ldbm_back_search( /* need normalized dn below */ realbase = ch_strdup( e->e_ndn ); + cache_return_entry_r( &li->li_cache, e ); if ( candidates == NULL ) { @@ -400,15 +401,20 @@ search_candidates( ) { ID_BLOCK *candidates; +#ifdef SLAPD_SCHEMA_NOT_COMPAT + candidates = filter_candidates( be, filter ); +#else + Filter rf, rf_or, af, af_or, lf, lf_and; #ifdef SLAPD_SCHEMA_NOT_COMPAT - struct berval rf_or_bv, af_or_bv; - static AttributeDescription *objectClass = NULL; + AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; #endif Debug(LDAP_DEBUG_TRACE, "search_candidates: base=\"%s\" s=%d d=%d\n", e->e_ndn, scope, deref ); +#endif +#ifndef SLAPD_SCHEMA_NOT_COMPAT if( !manageDSAit ) { /* match referrals */ rf.f_next = NULL; @@ -416,10 +422,8 @@ search_candidates( rf.f_or = &rf_or; rf.f_or->f_choice = LDAP_FILTER_EQUALITY; #ifdef SLAPD_SCHEMA_NOT_COMPAT - rf.f_or->f_av_desc = objectClass; - rf.f_or->f_av_value = &rf_or_bv; - rf.f_or->f_av_value->bv_val = ch_strdup( "REFERRAL" ); - rf.f_or->f_av_value->bv_len = sizeof("REFERRAL")-1; + rf.f_or->f_av_desc = ad_objectClass; + rf.f_or->f_av_value = ber_bvstrdup("REFERRAL"); #else rf.f_or->f_avtype = ch_strdup( "objectclass" ); rf.f_or->f_avvalue.bv_val = ch_strdup( "REFERRAL" ); @@ -439,9 +443,7 @@ search_candidates( af.f_or->f_choice = LDAP_FILTER_EQUALITY; #ifdef SLAPD_SCHEMA_NOT_COMPAT af.f_or->f_av_desc = objectClass; - af.f_or->f_av_value = &af_or_bv; - af.f_or->f_av_value->bv_val = ch_strdup( "ALIAS" ); - af.f_or->f_av_value->bv_len = sizeof("ALIAS")-1; + af.f_or->f_av_value = ber_bvstrdup("ALIAS"); #else af.f_or->f_avtype = ch_strdup( "objectclass" ); af.f_or->f_avvalue.bv_val = ch_strdup( "ALIAS" ); @@ -477,7 +479,7 @@ search_candidates( /* free dynamically allocated bits */ if( af.f_or != NULL ) { #ifdef SLAPD_SCHEMA_NOT_COMPAT - free( af.f_or->f_av_value->bv_val ); + ber_bvfree( af.f_or->f_av_value ); #else free( af.f_or->f_avtype ); free( af.f_or->f_avvalue.bv_val ); @@ -486,12 +488,13 @@ search_candidates( if( rf.f_or != NULL ) { #ifdef SLAPD_SCHEMA_NOT_COMPAT - free( rf.f_or->f_av_value->bv_val ); + ber_bvfree( rf.f_or->f_av_value ); #else free( rf.f_or->f_avtype ); free( rf.f_or->f_avvalue.bv_val ); #endif } +#endif return( candidates ); } diff --git a/servers/slapd/schema/core.schema b/servers/slapd/schema/core.schema index 06cfe644b1..36c80caf9d 100644 --- a/servers/slapd/schema/core.schema +++ b/servers/slapd/schema/core.schema @@ -292,7 +292,7 @@ attributetype ( 2.5.4.40 NAME 'crossCertificatePair' # 2.5.4.41 is 'name', moved above since other attribute types derive from it -attributetype ( 2.5.4.42 NAME 'givenName' SUP name ) +attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' ) SUP name ) attributetype ( 2.5.4.43 NAME 'initials' SUP name ) diff --git a/servers/slapd/schemaparse.c b/servers/slapd/schemaparse.c index 93cf2e5a14..68bc0ae31b 100644 --- a/servers/slapd/schemaparse.c +++ b/servers/slapd/schemaparse.c @@ -27,15 +27,15 @@ static void at_usage(void) LDAP_GCCATTR((noreturn)); static char *const err2text[] = { "", "Out of memory", - "Objectclass not found", - "Attribute type not found", - "Duplicate objectclass", - "Duplicate attributetype", - "Duplicate syntax", - "Duplicate matchingrule", + "ObjectClass not found", + "AttributeType not found", + "Duplicate objectClass", + "Duplicate attributeType", + "Duplicate ldapSyntax", + "Duplicate matchingRule", "OID or name required", - "Syntax or superior required", - "Matchingrule not found", + "SYNTAX or SUPerior required", + "MatchingRule not found", "Syntax not found", "Syntax required" }; @@ -123,7 +123,7 @@ parse_oc_old( for( namep = oc->oc_at_oids_must; *namep ; namep++ ) { code = at_fake_if_needed( *namep ); if ( code ) { - fprintf( stderr, "%s: line %d: %s %s\n", + fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), *namep); exit( EXIT_FAILURE ); } @@ -133,7 +133,7 @@ parse_oc_old( for( namep = oc->oc_at_oids_may; *namep; namep++ ) { code = at_fake_if_needed( *namep ); if ( code ) { - fprintf( stderr, "%s: line %d: %s %s\n", + fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), *namep); exit( EXIT_FAILURE ); } @@ -142,7 +142,7 @@ parse_oc_old( code = oc_add(oc,&err); if ( code ) { - fprintf( stderr, "%s: line %d: %s %s\n", + fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); exit( EXIT_FAILURE ); } @@ -298,7 +298,7 @@ parse_oc( /* oc->oc_oid == NULL will be an error someday */ code = oc_add(oc,&err); if ( code ) { - fprintf( stderr, "%s: line %d: %s %s\n", + fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); exit( EXIT_FAILURE ); } @@ -428,7 +428,7 @@ parse_at( } code = at_add(at,&err); if ( code ) { - fprintf( stderr, "%s: line %d: %s %s\n", + fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); exit( EXIT_FAILURE ); }