From 1c1400a568940232bff55fa95094716b87fc8d9a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 06 Dec 2013 16:13:01 +0000
Subject: [PATCH] OPENDJ-1088 (CR-2677) Wrong error message and result code when deleting branch as a user with insufficient access rights
---
opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java | 42 +++++++++++++-----------------------------
1 files changed, 13 insertions(+), 29 deletions(-)
diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
index 8aa8a09..cc2c9c1 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendDeleteOperation.java
@@ -440,22 +440,16 @@
* @throws DirectoryException If a problem occurs that should cause the
* operation to fail.
*/
- private void handleRequestControls()
- throws DirectoryException
+ private void handleRequestControls() throws DirectoryException
{
+ LocalBackendWorkflowElement.removeAllDisallowedControls(entryDN, this);
+
List<Control> requestControls = getRequestControls();
- if ((requestControls != null) && (! requestControls.isEmpty()))
+ if (requestControls != null && !requestControls.isEmpty())
{
for (Control c : requestControls)
{
- String oid = c.getOID();
-
- if (!LocalBackendWorkflowElement.isControlAllowed(entryDN, this, c))
- {
- // Skip disallowed non-critical controls.
- continue;
- }
-
+ final String oid = c.getOID();
if (oid.equals(OID_LDAP_ASSERTION))
{
LDAPAssertionRequestControl assertControl =
@@ -494,8 +488,7 @@
if (!filter.matchesEntry(entry))
{
throw newDirectoryException(entry, ResultCode.ASSERTION_FAILED,
- ERR_DELETE_ASSERTION_FAILED.get(String
- .valueOf(entryDN)));
+ ERR_DELETE_ASSERTION_FAILED.get(String.valueOf(entryDN)));
}
}
catch (DirectoryException de)
@@ -595,15 +588,12 @@
}
-
/**
* Handle conflict resolution.
* @return {@code true} if processing should continue for the operation, or
* {@code false} if not.
*/
private boolean handleConflictResolution() {
- boolean returnVal = true;
-
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
try {
@@ -614,8 +604,7 @@
result.getResultCode(), result.getErrorMessage());
setMatchedDN(result.getMatchedDN());
setReferralURLs(result.getReferralURLs());
- returnVal = false;
- break;
+ return false;
}
} catch (DirectoryException de) {
if (debugEnabled()) {
@@ -625,11 +614,10 @@
getConnectionID(), getOperationID(),
getExceptionMessage(de)));
setResponseData(de);
- returnVal = false;
- break;
+ return false;
}
}
- return returnVal;
+ return true;
}
/**
@@ -648,7 +636,7 @@
logError(ERR_DELETE_SYNCH_POSTOP_FAILED.get(getConnectionID(),
getOperationID(), getExceptionMessage(de)));
setResponseData(de);
- break;
+ return;
}
}
}
@@ -659,8 +647,6 @@
* {@code false} if not.
*/
private boolean processPreOperation() {
- boolean returnVal = true;
-
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
try {
@@ -671,8 +657,7 @@
appendErrorMessage(result.getErrorMessage());
setMatchedDN(result.getMatchedDN());
setReferralURLs(result.getReferralURLs());
- returnVal = false;
- break;
+ return false;
}
} catch (DirectoryException de) {
if (debugEnabled())
@@ -682,10 +667,9 @@
logError(ERR_DELETE_SYNCH_PREOP_FAILED.get(getConnectionID(),
getOperationID(), getExceptionMessage(de)));
setResponseData(de);
- returnVal = false;
- break;
+ return false;
}
}
- return returnVal;
+ return true;
}
}
--
Gitblit v1.10.0