jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chetan Mehrotra (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OAK-3911) Integer overflow causing incorrect file handling in OakDirectory for file size more than 2 GB
Date Fri, 01 Dec 2017 07:30:00 GMT

    [ https://issues.apache.org/jira/browse/OAK-3911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16274062#comment-16274062
] 

Chetan Mehrotra commented on OAK-3911:
--------------------------------------

bq. If you run into this issue, reindexing is not needed. Simply upgrade Oak to a more recent
version.

[~tmueller] Cannot confirm that as overflow may have caused issue while "chunking" i.e. write
operation (flushBlob). So if calculations done in that method were incorrect then it may impact
persisted index file structures. So for surety it would be better to reindex such indexes
i.e. indexes having index files over 2GB

> Integer overflow causing incorrect file handling in OakDirectory for file size more than
2 GB
> ---------------------------------------------------------------------------------------------
>
>                 Key: OAK-3911
>                 URL: https://issues.apache.org/jira/browse/OAK-3911
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: lucene
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>             Fix For: 1.0.27, 1.2.11, 1.3.15, 1.4
>
>         Attachments: OAK-3911-v1.patch
>
>
> 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.
> {noformat}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)
> {noformat}
> [1] https://github.com/apache/jackrabbit-oak/blob/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java#L361



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message