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,