]> git.sur5r.net Git - openldap/commitdiff
SLAPD_SCHEMA_NOT_COMPAT: simple Root DSE search WORKS!
authorKurt Zeilenga <kurt@openldap.org>
Mon, 15 May 2000 22:07:10 +0000 (22:07 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 15 May 2000 22:07:10 +0000 (22:07 +0000)
servers/slapd/ad.c
servers/slapd/backend.c
servers/slapd/result.c
servers/slapd/schema_init.c

index 317805f15611a6a53adc16c0c1e5fa3969ba9bda..abeac6f4dc71487af8146d4bf22e938e05440ff2 100644 (file)
@@ -32,8 +32,13 @@ AttributeDescription *ad_dup(
 
        *ad = *desc;
 
-       ad->ad_cname = ber_bvdup( ad->ad_cname );
-       ad->ad_lang = ch_strdup( ad->ad_lang );
+       if( ad->ad_cname != NULL ) {
+               ad->ad_cname = ber_bvdup( ad->ad_cname );
+       }
+
+       if( ad->ad_lang != NULL ) {
+               ad->ad_lang = ch_strdup( ad->ad_lang );
+       }
 
        return ad;
 }
@@ -43,7 +48,10 @@ ad_free( AttributeDescription *ad, int freeit )
 {
        if( ad == NULL ) return;
 
-       ber_bvfree( ad->ad_cname );
+       if( ad->ad_cname != NULL ) {
+               ber_bvfree( ad->ad_cname );
+       }
+
        free( ad->ad_lang );
 
        if( freeit ) free( ad );
index 48c91566cd9256bad41cf2c6fc22d69f80e210fe..60873f7a1180a5ad909e595c3c2b8c8ca2487877 100644 (file)
@@ -657,7 +657,7 @@ Attribute *backend_operational(
 {
        Attribute *a = ch_malloc( sizeof( Attribute ) );
 #ifdef SLAPD_SCHEMA_NOT_COMPAT
-       /* not yet implemented */
+       a->a_desc = slap_schema.si_ad_subschemaSubentry;
 #else
        a->a_type = ch_strdup("subschemasubentry");
        a->a_syntax = SYNTAX_DN | SYNTAX_CIS;
index 67d3109acbd3eff30d27a86f7acf89c814a90e82..e143286824f27a71790a30c5d23e24aa1b1e6fdf 100644 (file)
@@ -677,8 +677,10 @@ send_search_entry(
        for ( a = e->e_attrs; a != NULL; a = a->a_next ) {
 #ifdef SLAPD_SCHEMA_NOT_COMPAT
                AttributeDescription *desc = a->a_desc;
+               char *type = desc->ad_cname->bv_val;
 #else
                char *desc = a->a_type;
+               char *type = a->a_type;
 #endif
 
                if ( attrs == NULL ) {
@@ -716,7 +718,7 @@ send_search_entry(
                        continue;
                }
 
-               if (( rc = ber_printf( ber, "{s[" /*]}*/ , desc )) == -1 ) {
+               if (( rc = ber_printf( ber, "{s[" /*]}*/ , type )) == -1 ) {
                        Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
                        ber_free( ber, 1 );
                        send_ldap_result( conn, op, LDAP_OTHER,
index 6dd12ae5df123c7fe2be59b7796c04e7b8037e3e..349d17aea754620d716a6e2377177fde3e7e4ec1 100644 (file)
@@ -635,6 +635,10 @@ struct slap_schema_ad_map {
                offsetof(struct slap_internal_schema, si_ad_modifiersName) },
        { "modifyTimestamp",
                offsetof(struct slap_internal_schema, si_ad_modifyTimestamp) },
+
+       { "subschemaSubentry",
+               offsetof(struct slap_internal_schema, si_ad_subschemaSubentry) },
+
        { "namingContexts",
                offsetof(struct slap_internal_schema, si_ad_namingContexts) },
        { "supportedControl",