From 61be60eef8694b2c28386faf6dd2d7c4e842addd Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 16 Jun 2011 18:00:52 +0000
Subject: [PATCH] Fix OPENDJ-198: RFC 4512 compliance for ldap-toolkit
---
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/GuideSyntaxImpl.java | 34 +++++++++++++++++++++-------------
1 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/GuideSyntaxImpl.java b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/GuideSyntaxImpl.java
index e438696..efc4d81 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/GuideSyntaxImpl.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/schema/GuideSyntaxImpl.java
@@ -23,6 +23,7 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package org.forgerock.opendj.ldap.schema;
@@ -54,6 +55,8 @@
* Determines whether the provided string represents a valid criteria
* according to the guide syntax.
*
+ * @param schema
+ * The schema in which this syntax is defined.
* @param criteria
* The portion of the criteria for which to make the determination.
* @param valueStr
@@ -64,7 +67,8 @@
* @return <CODE>true</CODE> if the provided string does contain a valid
* criteria, or <CODE>false</CODE> if not.
*/
- static boolean criteriaIsValid(final String criteria, final String valueStr,
+ static boolean criteriaIsValid(final Schema schema,
+ final String criteria, final String valueStr,
final LocalizableMessageBuilder invalidReason)
{
// See if the criteria starts with a '!'. If so, then just evaluate
@@ -72,7 +76,8 @@
char c = criteria.charAt(0);
if (c == '!')
{
- return criteriaIsValid(criteria.substring(1), valueStr, invalidReason);
+ return criteriaIsValid(schema, criteria.substring(1), valueStr,
+ invalidReason);
}
// See if the criteria starts with a '('. If so, then find the
@@ -91,7 +96,7 @@
if (depth == 0)
{
final String subCriteria = criteria.substring(1, i);
- if (!criteriaIsValid(subCriteria, valueStr, invalidReason))
+ if (!criteriaIsValid(schema, subCriteria, valueStr, invalidReason))
{
return false;
}
@@ -108,7 +113,8 @@
c = criteria.charAt(i + 1);
if (c == '|' || c == '&')
{
- return criteriaIsValid(criteria.substring(i + 2), valueStr,
+ return criteriaIsValid(schema,
+ criteria.substring(i + 2), valueStr,
invalidReason);
}
else
@@ -152,7 +158,7 @@
c = criteria.charAt(5);
if (c == '|' || c == '&')
{
- return criteriaIsValid(criteria.substring(6), valueStr,
+ return criteriaIsValid(schema, criteria.substring(6), valueStr,
invalidReason);
}
else
@@ -176,7 +182,7 @@
c = criteria.charAt(6);
if (c == '|' || c == '&')
{
- return criteriaIsValid(criteria.substring(7), valueStr,
+ return criteriaIsValid(schema, criteria.substring(7), valueStr,
invalidReason);
}
else
@@ -230,7 +236,8 @@
try
{
SchemaUtils.readOID(new SubstringReader(criteria
- .substring(0, dollarPos)));
+ .substring(0, dollarPos)),
+ schema.allowMalformedNamesAndOptions());
}
catch (final DecodeException de)
{
@@ -328,8 +335,8 @@
c = criteria.charAt(endPos);
if (c == '|' || c == '&')
{
- return criteriaIsValid(criteria.substring(endPos + 1), valueStr,
- invalidReason);
+ return criteriaIsValid(schema,
+ criteria.substring(endPos + 1), valueStr, invalidReason);
}
else
{
@@ -397,7 +404,7 @@
final int sharpPos = valueStr.indexOf('#');
if (sharpPos < 0)
{
- return criteriaIsValid(valueStr, valueStr, invalidReason);
+ return criteriaIsValid(schema, valueStr, valueStr, invalidReason);
}
// Get the objectclass and see if it is a valid name or OID.
@@ -412,7 +419,8 @@
try
{
- SchemaUtils.readOID(new SubstringReader(ocName.substring(0, ocLength)));
+ SchemaUtils.readOID(new SubstringReader(ocName.substring(0, ocLength)),
+ schema.allowMalformedNamesAndOptions());
}
catch (final DecodeException de)
{
@@ -421,7 +429,7 @@
}
// The rest of the value must be the criteria.
- return criteriaIsValid(valueStr.substring(sharpPos + 1), valueStr,
- invalidReason);
+ return criteriaIsValid(schema, valueStr.substring(sharpPos + 1),
+ valueStr, invalidReason);
}
}
--
Gitblit v1.10.0