You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@orc.apache.org by "Dongjoon Hyun (Jira)" <ji...@apache.org> on 2021/10/20 20:36:08 UTC
[jira] [Resolved] (ORC-1034) The search byte array algorithm is
incorrectly implemented in FileDump.java
[ https://issues.apache.org/jira/browse/ORC-1034?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dongjoon Hyun resolved ORC-1034.
--------------------------------
Fix Version/s: 1.6.12
1.7.1
1.8.0
Assignee: Yiqun Zhang
Resolution: Fixed
This is resolved via https://github.com/apache/orc/pull/943
> The search byte array algorithm is incorrectly implemented in FileDump.java
> ---------------------------------------------------------------------------
>
> Key: ORC-1034
> URL: https://issues.apache.org/jira/browse/ORC-1034
> Project: ORC
> Issue Type: Bug
> Components: Java, tools
> Affects Versions: 1.7.0, 1.8.0, 1.6.11
> Reporter: Yiqun Zhang
> Assignee: Yiqun Zhang
> Priority: Major
> Fix For: 1.8.0, 1.7.1, 1.6.12
>
>
> {code:java}
> private static int indexOf(final byte[] data, final byte[] pattern, final int index) {
> if (data == null || data.length == 0 || pattern == null || pattern.length == 0 ||
> index > data.length || index < 0) {
> return -1;
> }
> int j = 0;
> for (int i = index; i < data.length; i++) {
> if (pattern[j] == data[i]) {
> j++;
> } else {
> j = 0;
> }
> if (j == pattern.length) {
> return i - pattern.length + 1;
> }
> }
> return -1;
> }
> {code}
> This matching algorithm is wrong when i does not backtrack after a failed match in the middle. As a simple example data = OOORC, pattern= ORC, index = 1, this algorithm will return -1.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)