You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/02/28 16:26:35 UTC

svn commit: r1662948 - /lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java

Author: mikemccand
Date: Sat Feb 28 15:26:35 2015
New Revision: 1662948

URL: http://svn.apache.org/r1662948
Log:
make SimpleText's checkIntegrity more robust so it's not fooled if you index the string END

Modified:
    lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java

Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java?rev=1662948&r1=1662947&r2=1662948&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java (original)
+++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java Sat Feb 28 15:26:35 2015
@@ -520,10 +520,16 @@ class SimpleTextDocValuesReader extends
     BytesRefBuilder scratch = new BytesRefBuilder();
     IndexInput clone = data.clone();
     clone.seek(0);
+    // checksum is fixed-width encoded with 20 bytes, plus 1 byte for newline (the space is included in SimpleTextUtil.CHECKSUM):
+    long footerStartPos = data.length() - (SimpleTextUtil.CHECKSUM.length + 21);
     ChecksumIndexInput input = new BufferedChecksumIndexInput(clone);
-    while(true) {
+    while (true) {
       SimpleTextUtil.readLine(input, scratch);
-      if (scratch.get().equals(END)) {
+      if (input.getFilePointer() >= footerStartPos) {
+        // Make sure we landed at precisely the right location:
+        if (input.getFilePointer() != footerStartPos) {
+          throw new CorruptIndexException("SimpleText failure: footer does not start at expected position current=" + input.getFilePointer() + " vs expected=" + footerStartPos, input);
+        }
         SimpleTextUtil.checkFooter(input);
         break;
       }



Re: svn commit: r1662948 - /lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java

Posted by Robert Muir <rc...@gmail.com>.
Thank you Mike!

On Sat, Feb 28, 2015 at 10:26 AM,  <mi...@apache.org> wrote:
> Author: mikemccand
> Date: Sat Feb 28 15:26:35 2015
> New Revision: 1662948
>
> URL: http://svn.apache.org/r1662948
> Log:
> make SimpleText's checkIntegrity more robust so it's not fooled if you index the string END
>
> Modified:
>     lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java
>
> Modified: lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java
> URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java?rev=1662948&r1=1662947&r2=1662948&view=diff
> ==============================================================================
> --- lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java (original)
> +++ lucene/dev/trunk/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextDocValuesReader.java Sat Feb 28 15:26:35 2015
> @@ -520,10 +520,16 @@ class SimpleTextDocValuesReader extends
>      BytesRefBuilder scratch = new BytesRefBuilder();
>      IndexInput clone = data.clone();
>      clone.seek(0);
> +    // checksum is fixed-width encoded with 20 bytes, plus 1 byte for newline (the space is included in SimpleTextUtil.CHECKSUM):
> +    long footerStartPos = data.length() - (SimpleTextUtil.CHECKSUM.length + 21);
>      ChecksumIndexInput input = new BufferedChecksumIndexInput(clone);
> -    while(true) {
> +    while (true) {
>        SimpleTextUtil.readLine(input, scratch);
> -      if (scratch.get().equals(END)) {
> +      if (input.getFilePointer() >= footerStartPos) {
> +        // Make sure we landed at precisely the right location:
> +        if (input.getFilePointer() != footerStartPos) {
> +          throw new CorruptIndexException("SimpleText failure: footer does not start at expected position current=" + input.getFilePointer() + " vs expected=" + footerStartPos, input);
> +        }
>          SimpleTextUtil.checkFooter(input);
>          break;
>        }
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org