luetzkendorf    2004/09/03 07:45:55

  Modified:    src/share/org/apache/slide/lock LockImpl.java
  Log:
  fix for bug 30982, and some cosmetics (merge)
  
  Revision  Changes    Path
  1.48      +25 -18    jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java
  
  Index: LockImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- LockImpl.java     5 Aug 2004 15:44:57 -0000       1.47
  +++ LockImpl.java     3 Sep 2004 14:45:55 -0000       1.48
  @@ -534,21 +534,27 @@
           if (!slideToken.isEnforceLockTokens())
               return true;
           
  -        SubjectNode principalNode = null;
  -        SubjectNode ownerNode = SubjectNode.getSubjectNode(token.getSubjectUri());
  -        try {
  -            principalNode = (SubjectNode)securityHelper.getPrincipal(slideToken);
  -        }
  -        catch (SlideException e) {}
  -        if (Configuration.usePrincipalIdentifiedLocks() &&
  -            ownerNode != null &&
  -            !ownerNode.equals(SubjectNode.UNAUTHENTICATED) &&
  -            ownerNode.equals(principalNode)) {
  -            return true;
  +        // if org.apache.slide.principalIdentifiedLocks is true the lock-owner
  +        // must not provide the lock token (i.e. it must not be present in the
  +        // slide token)
  +        if (Configuration.usePrincipalIdentifiedLocks()) {
  +            SubjectNode principalNode = null;
  +            SubjectNode ownerNode = 
SubjectNode.getSubjectNode(token.getSubjectUri());
  +            try {
  +                principalNode = 
(SubjectNode)securityHelper.getPrincipal(slideToken);
  +            }
  +            catch (SlideException e) {}
  +            
  +            if (ownerNode != null &&
  +                !ownerNode.equals(SubjectNode.UNAUTHENTICATED) &&
  +                ownerNode.equals(principalNode)) 
  +            {
  +                return true;
  +            }
  +            return (slideToken.checkLockToken(token.getLockId()));
  +        } else {
  +            return (slideToken.checkLockToken(token.getLockId()));
           }
  -        else {
  -        return (slideToken.checkLockToken(token.getLockId()));
  -    }
       }
       
       /**
  @@ -748,6 +754,7 @@
           if ((tryToLock && condition1 && condition4)
               || (condition3 && !condition2 && !condition6)
               || (condition3 && !condition5 && condition6)
  +            || (condition5 && !condition2)  // FIXES 30982
              ){
               compatible = false;
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to