Author: chetanm
Date: Fri Jan 22 15:28:08 2016
New Revision: 1726232

URL: http://svn.apache.org/viewvc?rev=1726232&view=rev
Log:
OAK-3911 - Integer overflow causing incorrect file handling in OakDirectory for 
sile size more than 2 GB

Ensure that int * int does not lead to overflow

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java?rev=1726232&r1=1726231&r2=1726232&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
 Fri Jan 22 15:28:08 2016
@@ -347,7 +347,7 @@ class OakDirectory extends Directory {
                 flushBlob();
                 checkState(!blobModified);
 
-                int n = (int) Math.min(blobSize, length - i * blobSize);
+                int n = (int) Math.min(blobSize, length - (long)i * blobSize);
                 InputStream stream = data.get(i).getNewStream();
                 try {
                     ByteStreams.readFully(stream, blob, 0, n);
@@ -360,7 +360,7 @@ class OakDirectory extends Directory {
 
         private void flushBlob() throws IOException {
             if (blobModified) {
-                int n = (int) Math.min(blobSize, length - index * blobSize);
+                int n = (int) Math.min(blobSize, length - (long)index * 
blobSize);
                 InputStream in = new ByteArrayInputStream(blob, 0, n);
                 if (uniqueKey != null) {
                     in = new SequenceInputStream(in, 


Reply via email to