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/LocalBackendModifyOperation.java | 32 ++++++++++----------------------
1 files changed, 10 insertions(+), 22 deletions(-)
diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
index e63a8b4..d92669a 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -682,9 +682,10 @@
* @throws DirectoryException If a problem is encountered with any of the
* controls.
*/
- protected void processRequestControls()
- throws DirectoryException
+ protected void processRequestControls() throws DirectoryException
{
+ LocalBackendWorkflowElement.removeAllDisallowedControls(entryDN, this);
+
List<Control> requestControls = getRequestControls();
if ((requestControls != null) && (! requestControls.isEmpty()))
{
@@ -693,12 +694,6 @@
Control c = requestControls.get(i);
String oid = c.getOID();
- if (!LocalBackendWorkflowElement.isControlAllowed(entryDN, this, c))
- {
- // Skip disallowed non-critical controls.
- continue;
- }
-
if (oid.equals(OID_LDAP_ASSERTION))
{
LDAPAssertionRequestControl assertControl =
@@ -2081,8 +2076,6 @@
* {@code false} if not.
*/
protected boolean handleConflictResolution() {
- boolean returnVal = true;
-
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
try {
@@ -2093,8 +2086,7 @@
result.getResultCode(), result.getErrorMessage());
setMatchedDN(result.getMatchedDN());
setReferralURLs(result.getReferralURLs());
- returnVal = false;
- break;
+ return false;
}
} catch (DirectoryException de) {
if (debugEnabled()) {
@@ -2104,11 +2096,10 @@
getConnectionID(), getOperationID(),
getExceptionMessage(de)));
setResponseData(de);
- returnVal = false;
- break;
+ return false;
}
}
- return returnVal;
+ return true;
}
/**
@@ -2117,7 +2108,6 @@
* {@code false} if not.
*/
protected boolean processPreOperation() {
- boolean returnVal = true;
for (SynchronizationProvider<?> provider :
DirectoryServer.getSynchronizationProviders()) {
try {
@@ -2128,8 +2118,7 @@
appendErrorMessage(result.getErrorMessage());
setMatchedDN(result.getMatchedDN());
setReferralURLs(result.getReferralURLs());
- returnVal = false;
- break;
+ return false;
}
} catch (DirectoryException de) {
if (debugEnabled()) {
@@ -2138,11 +2127,10 @@
logError(ERR_MODIFY_SYNCH_PREOP_FAILED.get(getConnectionID(),
getOperationID(), getExceptionMessage(de)));
setResponseData(de);
- returnVal = false;
- break;
+ return false;
}
}
- return returnVal;
+ return true;
}
/**
@@ -2160,7 +2148,7 @@
logError(ERR_MODIFY_SYNCH_POSTOP_FAILED.get(getConnectionID(),
getOperationID(), getExceptionMessage(de)));
setResponseData(de);
- break;
+ return;
}
}
}
--
Gitblit v1.10.0