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)

Reply via email to