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)