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