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/LocalBackendAddOperation.java |   64 +++++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
index d358780..0de8635 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendAddOperation.java
@@ -1259,15 +1259,30 @@
                 {
                   if (! syntax.valueIsAcceptable(v.getValue(), invalidReason))
                   {
-                    Message message = WARN_ADD_OP_INVALID_SYNTAX.get(
+                    if (!syntax.isHumanReadable() || syntax.isBinary())
+                    {
+                      // Value is not human-readable
+                      Message message = WARN_ADD_OP_INVALID_SYNTAX_NO_VALUE.get(
+                                        String.valueOf(entryDN),
+                                        String.valueOf(a.getName()),
+                                        String.valueOf(invalidReason));
+
+                      throw new DirectoryException(
+                                   ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+                                   message);
+                    }
+                    else
+                    {
+                      Message message = WARN_ADD_OP_INVALID_SYNTAX.get(
                                         String.valueOf(entryDN),
                                         String.valueOf(v.getValue().toString()),
                                         String.valueOf(a.getName()),
                                         String.valueOf(invalidReason));
 
-                    throw new DirectoryException(
+                      throw new DirectoryException(
                                    ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                                    message);
+                    }
                   }
                 }
               }
@@ -1287,15 +1302,30 @@
                   if (! syntax.valueIsAcceptable(v.getValue(),
                                                  invalidReason))
                   {
-                    Message message = WARN_ADD_OP_INVALID_SYNTAX.
+                    if (!syntax.isHumanReadable() || syntax.isBinary())
+                    {
+                      // Value is not human-readable
+                      Message message = WARN_ADD_OP_INVALID_SYNTAX_NO_VALUE.
+                        get(String.valueOf(entryDN),
+                            String.valueOf(a.getName()),
+                            String.valueOf(invalidReason));
+
+                      throw new DirectoryException(
+                                   ResultCode.INVALID_ATTRIBUTE_SYNTAX,
+                                   message);
+                    }
+                    else
+                    {
+                      Message message = WARN_ADD_OP_INVALID_SYNTAX.
                         get(String.valueOf(entryDN),
                             String.valueOf(v.getValue().toString()),
                             String.valueOf(a.getName()),
                             String.valueOf(invalidReason));
 
-                    throw new DirectoryException(
+                      throw new DirectoryException(
                                    ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                                    message);
+                    }
                   }
                 }
               }
@@ -1319,11 +1349,22 @@
                   if (! syntax.valueIsAcceptable(v.getValue(),
                                                  invalidReason))
                   {
-                    logError(WARN_ADD_OP_INVALID_SYNTAX.get(
+                    if (!syntax.isHumanReadable() || syntax.isBinary())
+                    {
+                      // Value is not human-readable
+                      logError(WARN_ADD_OP_INVALID_SYNTAX_NO_VALUE.get(
+                                  String.valueOf(entryDN),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason)));
+                    }
+                    else
+                    {
+                      logError(WARN_ADD_OP_INVALID_SYNTAX.get(
                                   String.valueOf(entryDN),
                                   String.valueOf(v.getValue().toString()),
                                   String.valueOf(a.getName()),
                                   String.valueOf(invalidReason)));
+                    }
                   }
                 }
               }
@@ -1342,11 +1383,22 @@
                   if (! syntax.valueIsAcceptable(v.getValue(),
                                                  invalidReason))
                   {
-                    logError(WARN_ADD_OP_INVALID_SYNTAX.get(
+                    if (!syntax.isHumanReadable() || syntax.isBinary())
+                    {
+                      // Value is not human-readable
+                      logError(WARN_ADD_OP_INVALID_SYNTAX_NO_VALUE.get(
+                                  String.valueOf(entryDN),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason)));
+                    }
+                    else
+                    {
+                      logError(WARN_ADD_OP_INVALID_SYNTAX.get(
                                   String.valueOf(entryDN),
                                   String.valueOf(v.getValue().toString()),
                                   String.valueOf(a.getName()),
                                   String.valueOf(invalidReason)));
+                    }
                   }
                 }
               }

--
Gitblit v1.10.0