Author: alexparvulescu
Date: Thu Jun  2 13:29:33 2016
New Revision: 1746571

URL: http://svn.apache.org/viewvc?rev=1746571&view=rev
Log:
OAK-4423 Possible overflow in checkpoint creation

Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CheckpointTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java?rev=1746571&r1=1746570&r2=1746571&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
 Thu Jun  2 13:29:33 2016
@@ -404,7 +404,11 @@ public class SegmentNodeStore implements
             }
 
             NodeBuilder cp = checkpoints.child(name);
-            cp.setProperty("timestamp", now + lifetime);
+            if (Long.MAX_VALUE - now > lifetime) {
+                cp.setProperty("timestamp", now + lifetime);
+            } else {
+                cp.setProperty("timestamp", Long.MAX_VALUE);
+            }
             cp.setProperty("created", now);
 
             NodeBuilder props = cp.setChildNode("properties");

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CheckpointTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CheckpointTest.java?rev=1746571&r1=1746570&r2=1746571&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CheckpointTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CheckpointTest.java
 Thu Jun  2 13:29:33 2016
@@ -184,4 +184,14 @@ public class CheckpointTest {
         String cp0 = store.checkpoint(10);
         assertNotNull(store.retrieve(cp0));
     }
+
+    @Test
+    public void testCheckpointMax() throws CommitFailedException, IOException {
+        SegmentNodeStore store = SegmentNodeStoreBuilders.builder(
+                new MemoryStore()).build();
+        String cp0 = store.checkpoint(Long.MAX_VALUE);
+        String cp1 = store.checkpoint(Long.MAX_VALUE);
+        assertNotNull(store.retrieve(cp0));
+        assertNotNull(store.retrieve(cp1));
+    }
 }


Reply via email to