From aad596c8559b3d3d081617736cdbeda1374f017b Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 11 May 2012 21:58:30 +0000
Subject: [PATCH] Fix OPENDJ-482: Validation for the CertificateSyntax

---
 opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java |   53 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 46 insertions(+), 7 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 fd779b0..b3ff2b2 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -1492,9 +1492,19 @@
         {
           if (!syntax.valueIsAcceptable(v.getValue(), invalidReason))
           {
-            throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+            if (!syntax.isHumanReadable() || syntax.isBinary())
+            {
+              // Value is not human-readable
+              throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+                ERR_MODIFY_ADD_INVALID_SYNTAX_NO_VALUE.get(
+                    String.valueOf(entryDN), attr.getName(), invalidReason));
+            }
+            else
+            {
+              throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                 ERR_MODIFY_ADD_INVALID_SYNTAX.get(String.valueOf(entryDN), attr
                     .getName(), v.getValue().toString(), invalidReason));
+            }
           }
         }
       }
@@ -1506,8 +1516,18 @@
           if (!syntax.valueIsAcceptable(v.getValue(), invalidReason))
           {
             setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
-            logError(ERR_MODIFY_ADD_INVALID_SYNTAX.get(String.valueOf(entryDN),
-                attr.getName(), v.getValue().toString(), invalidReason));
+            if (!syntax.isHumanReadable() || syntax.isBinary())
+            {
+              // Value is not human-readable
+              logError(ERR_MODIFY_ADD_INVALID_SYNTAX_NO_VALUE.get(
+                  String.valueOf(entryDN), attr.getName(), invalidReason));
+            }
+            else
+            {
+              logError(ERR_MODIFY_ADD_INVALID_SYNTAX.get(String
+                  .valueOf(entryDN), attr.getName(), v.getValue().toString(),
+                  invalidReason));
+            }
             invalidReason = new MessageBuilder();
           }
         }
@@ -1695,9 +1715,19 @@
         {
           if (!syntax.valueIsAcceptable(v.getValue(), invalidReason))
           {
-            throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+            if (!syntax.isHumanReadable() || syntax.isBinary())
+            {
+              // Value is not human-readable
+              throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+                ERR_MODIFY_REPLACE_INVALID_SYNTAX_NO_VALUE.get(
+                    String.valueOf(entryDN), attr.getName(), invalidReason));
+            }
+            else
+            {
+              throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                 ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(String.valueOf(entryDN),
                     attr.getName(), v.getValue().toString(), invalidReason));
+            }
           }
         }
       }
@@ -1709,9 +1739,18 @@
           if (!syntax.valueIsAcceptable(v.getValue(), invalidReason))
           {
             setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
-            logError(ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(String
-                .valueOf(entryDN), attr.getName(), v.getValue().toString(),
-                invalidReason));
+            if (!syntax.isHumanReadable() || syntax.isBinary())
+            {
+              // Value is not human-readable
+              logError(ERR_MODIFY_REPLACE_INVALID_SYNTAX_NO_VALUE.get(String
+                  .valueOf(entryDN), attr.getName(), invalidReason));
+            }
+            else
+            {
+              logError(ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(String
+                  .valueOf(entryDN), attr.getName(), v.getValue().toString(),
+                  invalidReason));
+            }
             invalidReason = new MessageBuilder();
           }
         }

--
Gitblit v1.10.0