From aedf4b42fce84db9d7dfa5de4bf53be30da02df5 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Fri, 5 Oct 2001 01:55:14 +0000 Subject: [PATCH] Return unwillingToPerform instead of noSuchObject for subschema subentry --- servers/slapd/add.c | 12 +++++++++++- servers/slapd/delete.c | 19 +++++++++++++++++-- servers/slapd/modify.c | 15 +++++++++++++++ servers/slapd/modrdn.c | 14 ++++++++++++++ 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/servers/slapd/add.c b/servers/slapd/add.c index 31eed448a9..238c8f1d0b 100644 --- a/servers/slapd/add.c +++ b/servers/slapd/add.c @@ -186,8 +186,18 @@ do_add( Connection *conn, Operation *op ) if( e->e_ndn == NULL || *e->e_ndn == '\0' ) { /* protocolError may be a more appropriate error */ send_ldap_result( conn, op, rc = LDAP_ALREADY_EXISTS, - NULL, "root DSE exists", NULL, NULL ); + NULL, "root DSE already exists", + NULL, NULL ); goto done; + +#if defined( SLAPD_SCHEMA_DN ) + } else if ( strcasecmp( ndn, SLAPD_SCHEMA_DN ) == 0 ) { + /* protocolError may be a more appropriate error */ + send_ldap_result( conn, op, rc = LDAP_ALREADY_EXISTS, + NULL, "subschema subentry already exists", + NULL, NULL ); + goto done; +#endif } manageDSAit = get_manageDSAit( op ); diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c index b1bf15eb8a..89ca8964dc 100644 --- a/servers/slapd/delete.c +++ b/servers/slapd/delete.c @@ -88,8 +88,8 @@ do_delete( if( *ndn == '\0' ) { #ifdef NEW_LOGGING - LDAP_LOG(( "operation", LDAP_LEVEL_INFO, - "do_delete: conn %d Attempt to delete root DSE.\n", conn->c_connid )); + LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_delete: conn %d: " + "Attempt to delete root DSE.\n", conn->c_connid )); #else Debug( LDAP_DEBUG_ANY, "do_delete: root dse!\n", 0, 0, 0 ); #endif @@ -97,6 +97,21 @@ do_delete( send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, NULL, "cannot delete the root DSE", NULL, NULL ); goto cleanup; + +#ifdef SLAPD_SCHEMA_DN + } else if ( strcasecmp( ndn, SLAPD_SCHEMA_DN ) == 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_delete: conn %d: " + "Attempt to delete subschema subentry.\n", conn->c_connid )); +#else + Debug( LDAP_DEBUG_ANY, "do_delete: subschema subentry!\n", 0, 0, 0 ); +#endif + /* protocolError would likely be a more appropriate error */ + send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, + NULL, "cannot delete the root DSE", NULL, NULL ); + goto cleanup; + +#endif } Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d DEL dn=\"%s\"\n", diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index a00e54dc67..2089bff883 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -200,6 +200,21 @@ do_modify( send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, NULL, "modify upon the root DSE not supported", NULL, NULL ); goto cleanup; + +#if defined( SLAPD_SCHEMA_DN ) + } else if ( strcasecmp( ndn, SLAPD_SCHEMA_DN ) == 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_ERR, + "do_modify: attempt to modify subschema subentry.\n" )); +#else + Debug( LDAP_DEBUG_ANY, "do_modify: subschema subentry!\n", 0, 0, 0 ); +#endif + + send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, + NULL, "modification of subschema subentry not supported", + NULL, NULL ); + goto cleanup; +#endif } #ifdef LDAP_DEBUG diff --git a/servers/slapd/modrdn.c b/servers/slapd/modrdn.c index a1d0d25b3c..9e4422d7e7 100644 --- a/servers/slapd/modrdn.c +++ b/servers/slapd/modrdn.c @@ -223,6 +223,20 @@ do_modrdn( send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, NULL, "cannot rename the root DSE", NULL, NULL ); goto cleanup; + +#ifdef SLAPD_SCHEMA_DN + } else if ( strcasecmp( ndn, SLAPD_SCHEMA_DN ) == 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_ERR, + "do_modrdn: attempt to modify subschema subentry\n" )); +#else + Debug( LDAP_DEBUG_ANY, "do_modrdn: subschema subentry!\n", 0, 0, 0 ); +#endif + + send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, + NULL, "cannot rename subschema subentry", NULL, NULL ); + goto cleanup; +#endif } Statslog( LDAP_DEBUG_STATS, "conn=%ld op=%d MODRDN dn=\"%s\"\n", -- 2.39.5