You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by fr...@apache.org on 2017/08/04 08:49:28 UTC
svn commit: r1804080 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java
Author: frm
Date: Fri Aug 4 08:49:27 2017
New Revision: 1804080
URL: http://svn.apache.org/viewvc?rev=1804080&view=rev
Log:
OAK-6518 - Perform the checksum computation before parsing the entries
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java?rev=1804080&r1=1804079&r2=1804080&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/index/IndexLoader.java Fri Aug 4 08:49:27 2017
@@ -76,13 +76,17 @@ public class IndexLoader {
index.mark();
CRC32 checksum = new CRC32();
+ checksum.update(index.array());
+ if (crc32 != (int) checksum.getValue()) {
+ throw new InvalidIndexException("Invalid checksum");
+ }
+
long limit = length - 2 * blockSize - bytes - blockSize;
long lastMsb = Long.MIN_VALUE;
long lastLsb = Long.MIN_VALUE;
byte[] entry = new byte[ENTRY_SIZE];
for (int i = 0; i < count; i++) {
index.get(entry);
- checksum.update(entry);
ByteBuffer buffer = wrap(entry);
long msb = buffer.getLong();
@@ -107,10 +111,6 @@ public class IndexLoader {
lastLsb = lsb;
}
- if (crc32 != (int) checksum.getValue()) {
- throw new InvalidIndexException("Invalid checksum");
- }
-
index.reset();
return new Index(index);