Index: test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java
===================================================================
--- test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java	(revision 1141101)
+++ test/java/org/apache/jackrabbit/core/security/authorization/AbstractWriteTest.java	(working copy)
@@ -1298,6 +1298,11 @@
         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();
     }
Index: main/java/org/apache/jackrabbit/core/PropertyImpl.java
===================================================================
--- main/java/org/apache/jackrabbit/core/PropertyImpl.java	(revision 1141101)
+++ main/java/org/apache/jackrabbit/core/PropertyImpl.java	(working copy)
@@ -258,7 +258,7 @@
             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) ?
@@ -893,9 +893,13 @@
      * {@inheritDoc}
      */
     public Node getParent() throws RepositoryException {
-        return (Node) itemMgr.getItem(getPropertyState().getParentId());
+        return getParent(true);
     }
 
+    protected Node getParent(boolean checkPermission) throws RepositoryException {
+        return (Node) itemMgr.getItem(getPropertyState().getParentId(), checkPermission);
+    }
+
     //--------------------------------------------------------------< Object >
 
     /**
