mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
19.26.2010 78ccbe537b86a09fc3dee784a60de0766c52a917
Fix issue 4492: base searches don't work.

Copied from the issue:

Fix a bug where an NPE is occurring during ACI processing because the base entry contains a single RDN component which our one-level scope resolution does not handle very well (actually this is understandable - DN.getParent() has surprising behavior for single RDN DNs). This bug can be seen more clearly on trunk builds because the NPE stack trace is non-empty (IIRC there was a bug in older JVM versions where the NPE stack trace could be empty).

Fix a bug where our exception handling code fails when an exception's stack trace is empty (in this case the NPE does not have any stack trace elements).

2 files modified
44 ■■■■■ changed files
opends/src/server/org/opends/server/authorization/dseecompat/AciTargets.java 4 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/util/StaticUtils.java 40 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/authorization/dseecompat/AciTargets.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008 Sun Microsystems, Inc.
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 */
package org.opends.server.authorization.dseecompat;
@@ -608,7 +608,7 @@
             * Sun CR 6535035 has been raised on DSEE:
             * Non-standard interpretation of onelevel in ACI targetScope.
             */
            if(!entryDN.getParent().equals(targetDN))
            if(!targetDN.equals(entryDN.getParent()))
                return false;
            break;
        case WHOLE_SUBTREE:
opends/src/server/org/opends/server/util/StaticUtils.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2006-2009 Sun Microsystems, Inc.
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 */
package org.opends.server.util;
@@ -1563,13 +1563,17 @@
    }
    else if (t instanceof NullPointerException)
    {
      StackTraceElement[] stackElements = t.getStackTrace();
      MessageBuilder message = new MessageBuilder();
      message.append("NullPointerException(");
      message.append(stackElements[0].getFileName());
      message.append(":");
      message.append(stackElements[0].getLineNumber());
      StackTraceElement[] stackElements = t.getStackTrace();
      if (stackElements.length > 0)
      {
        message.append(stackElements[0].getFileName());
        message.append(":");
        message.append(stackElements[0].getLineNumber());
      }
      message.append(")");
      return message.toMessage();
    }
@@ -1597,19 +1601,23 @@
      if (t.getMessage() == null)
      {
        StackTraceElement[] stackElements = t.getStackTrace();
        message.append(stackElements[0].getFileName());
        message.append(":");
        message.append(stackElements[0].getLineNumber());
        // FIXME Temporary to debug issue 2256.
        if (t instanceof IllegalStateException)
        if (stackElements.length > 0)
        {
          for (int i = 1; i < stackElements.length; i++)
          message.append(stackElements[0].getFileName());
          message.append(":");
          message.append(stackElements[0].getLineNumber());
          // FIXME Temporary to debug issue 2256.
          if (t instanceof IllegalStateException)
          {
            message.append(' ');
            message.append(stackElements[i].getFileName());
            message.append(":");
            message.append(stackElements[i].getLineNumber());
            for (int i = 1; i < stackElements.length; i++)
            {
              message.append(' ');
              message.append(stackElements[i].getFileName());
              message.append(":");
              message.append(stackElements[i].getLineNumber());
            }
          }
        }
      }