From e4779aefc1182a15d74c3b45c977c2fa26d88f81 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Wed, 30 Apr 2003 13:37:14 +0000 Subject: [PATCH] A pre-operation plugin is not required to set SLAPI_RESULT_CODE in order to prevent the operation from being passed to the backend. It need only return a non-zero error code. --- servers/slapd/add.c | 4 +++- servers/slapd/bind.c | 5 +++-- servers/slapd/compare.c | 4 +++- servers/slapd/delete.c | 4 +++- servers/slapd/modify.c | 3 ++- servers/slapd/modrdn.c | 4 +++- servers/slapd/search.c | 4 +++- 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/servers/slapd/add.c b/servers/slapd/add.c index fa61285c4a..1ff6ed0cc6 100644 --- a/servers/slapd/add.c +++ b/servers/slapd/add.c @@ -556,8 +556,10 @@ static int doPreAddPluginFNs( Operation *op ) #else Debug(LDAP_DEBUG_TRACE, "do_add: add preoperation plugin failed.\n", 0, 0, 0); - if ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rc ) != 0 ) + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rc ) != 0 ) || + rc == LDAP_SUCCESS ) { rc = LDAP_OTHER; + } #endif } else { rc = LDAP_SUCCESS; diff --git a/servers/slapd/bind.c b/servers/slapd/bind.c index 93aedd3099..9641d863c2 100644 --- a/servers/slapd/bind.c +++ b/servers/slapd/bind.c @@ -540,9 +540,10 @@ do_bind( */ int ldapRc; - if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&ldapRc ) != 0 ) + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&ldapRc ) != 0 ) || + ldapRc == LDAP_SUCCESS ) { ldapRc = LDAP_OTHER; - + } op->orb_edn.bv_val = NULL; op->orb_edn.bv_len = 0; if ( rs->sr_err != SLAPI_BIND_FAIL && ldapRc == LDAP_SUCCESS ) { diff --git a/servers/slapd/compare.c b/servers/slapd/compare.c index fac29baddd..abd1c2d426 100644 --- a/servers/slapd/compare.c +++ b/servers/slapd/compare.c @@ -272,8 +272,10 @@ do_compare( Debug(LDAP_DEBUG_TRACE, "do_compare: compare preoperation plugin " "failed.\n", 0, 0, 0); #endif - if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0) + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0 ) || + rs->sr_err == LDAP_SUCCESS ) { rs->sr_err = LDAP_OTHER; + } goto cleanup; } #endif /* defined( LDAP_SLAPI ) */ diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c index 4ef2a53b80..30e1294a69 100644 --- a/servers/slapd/delete.c +++ b/servers/slapd/delete.c @@ -173,8 +173,10 @@ do_delete( Debug (LDAP_DEBUG_TRACE, "do_delete: delete preoperation plugin failed.\n", 0, 0, 0); #endif - if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0 ) + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0 ) || + rs->sr_err == LDAP_SUCCESS ) { rs->sr_err = LDAP_OTHER; + } goto cleanup; } #endif /* defined( LDAP_SLAPI ) */ diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index df77beaf15..f8b1d7b872 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -347,7 +347,8 @@ do_modify( Debug(LDAP_DEBUG_TRACE, "do_modify: modify preoperation plugin failed.\n", 0, 0, 0); #endif - if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0) { + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0 ) || + rs->sr_err == LDAP_SUCCESS ) { rs->sr_err = LDAP_OTHER; } slapi_x_free_ldapmods( modv ); diff --git a/servers/slapd/modrdn.c b/servers/slapd/modrdn.c index 0644a8995a..6babf195a6 100644 --- a/servers/slapd/modrdn.c +++ b/servers/slapd/modrdn.c @@ -336,8 +336,10 @@ do_modrdn( Debug(LDAP_DEBUG_TRACE, "do_modrdn: modrdn preoperation plugin " "failed.\n", 0, 0, 0); #endif - if ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0) + if ( ( slapi_pblock_get( pb, SLAPI_RESULT_CODE, (void *)&rs->sr_err ) != 0 ) || + rs->sr_err == LDAP_SUCCESS ) { rs->sr_err = LDAP_OTHER; + } goto cleanup; } #endif /* defined( LDAP_SLAPI ) */ diff --git a/servers/slapd/search.c b/servers/slapd/search.c index 1d53226ce0..c033b1fe7b 100644 --- a/servers/slapd/search.c +++ b/servers/slapd/search.c @@ -482,8 +482,10 @@ static int doPreSearchPluginFNs( Operation *op ) Debug(LDAP_DEBUG_TRACE, "doPreSearchPluginFNs: search preoperation plugin " "returned %d.\n", rc, 0, 0); #endif - if ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rc ) != 0) + if ( ( slapi_pblock_get( op->o_pb, SLAPI_RESULT_CODE, (void *)&rc ) != 0 ) || + rc == LDAP_SUCCESS ) { rc = LDAP_OTHER; + } } else { rc = LDAP_SUCCESS; } -- 2.39.5