You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/06/29 17:54:29 UTC

svn commit: r1141141 - in /jackrabbit/trunk/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/PropertyImpl.java test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java

Author: stefan
Date: Wed Jun 29 15:54:28 2011
New Revision: 1141141

URL: http://svn.apache.org/viewvc?rev=1141141&view=rev
Log:
JCR-3007: setProperty access control evaluation does not properly cope with XA transactions

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java?rev=1141141&r1=1141140&r2=1141141&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java Wed Jun 29 15:54:28 2011
@@ -258,7 +258,7 @@ public class PropertyImpl extends ItemIm
             throws ValueFormatException, VersionException,
             LockException, ConstraintViolationException,
             RepositoryException {
-        NodeImpl parent = (NodeImpl) getParent();
+        NodeImpl parent = (NodeImpl) getParent(false);
         // check multi-value flag
         if (multipleValues != isMultiple()) {
             String msg = (multipleValues) ?
@@ -327,6 +327,10 @@ public class PropertyImpl extends ItemIm
         thisState.setType(type);
     }
 
+    protected Node getParent(boolean checkPermission) throws RepositoryException {
+        return (Node) itemMgr.getItem(getPropertyState().getParentId(), checkPermission);
+    }
+
     /**
      * Same as <code>{@link Property#setValue(String)}</code> except that
      * this method takes a <code>Name</code> instead of a <code>String</code>
@@ -893,7 +897,7 @@ public class PropertyImpl extends ItemIm
      * {@inheritDoc}
      */
     public Node getParent() throws RepositoryException {
-        return (Node) itemMgr.getItem(getPropertyState().getParentId());
+        return getParent(true);
     }
 
     //--------------------------------------------------------------< Object >

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java?rev=1141141&r1=1141140&r2=1141141&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java Wed Jun 29 15:54:28 2011
@@ -1298,6 +1298,11 @@ public abstract class AbstractWriteTest 
         n2 = n.addNode(nodeName1);
         s.save();
 
+        // set a property on a child node of an uncommited parent
+        n2.setProperty(propertyName1, "testSetProperty");
+        s.save();  // -> used to fail because PropertyImpl#getParent called from PropertyImpl#checkSetValue
+                   //    was checking read permission on the not yet commited parent
+
         // commit
         utx.commit();
     }
@@ -1315,4 +1320,4 @@ public abstract class AbstractWriteTest 
         }
         return policyNode;
     }
-}
\ No newline at end of file
+}