Details
Description
In couple of cases we have seen strange error related to invalid seek. In such cases it was seen that file sizes are greater than 2GB. A close inspection of OakDirectory [1] shows that following calls in loadBlob and flushBlob are prone to integer overflow (Thanks tmueller)
- int n = (int) Math.min(blobSize, length - index * blobSize);
- int n = (int) Math.min(blobSize, length - i * blobSize);
Above both blobSize and index and i are int. And multiplication of 2 int would be int that can cause overflow.
Caused by: java.io.IOException: Invalid seek request at org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexFile.seek(OakDirectory.java:288) at org.apache.jackrabbit.oak.plugins.index.lucene.OakDirectory$OakIndexInput.seek(OakDirectory.java:418) at org.apache.lucene.codecs.BlockTreeTermsReader.seekDir(BlockTreeTermsReader.java:223) at org.apache.lucene.codecs.BlockTreeTermsReader.<init>(BlockTreeTermsReader.java:142)
Attachments
Attachments
Issue Links
- relates to
-
OAK-2388 Possibility of overflow in file length calculation
- Closed