Yiqun Zhang created ORC-1034:
--------------------------------
Summary: 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.6.11, 1.7.0, 1.8.0
Reporter: Yiqun Zhang
{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)