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 md...@apache.org on 2018/09/18 09:33:26 UTC
svn commit: r1841210 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
Author: mduerig
Date: Tue Sep 18 09:33:25 2018
New Revision: 1841210
URL: http://svn.apache.org/viewvc?rev=1841210&view=rev
Log:
OAK-7761: SegmentTarWriter#readSegment does not check the return value of FileChannel#read
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java?rev=1841210&r1=1841209&r2=1841210&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/SegmentTarWriter.java Tue Sep 18 09:33:25 2018
@@ -20,8 +20,10 @@ package org.apache.jackrabbit.oak.segmen
import static com.google.common.base.Charsets.UTF_8;
import static com.google.common.base.Preconditions.checkState;
+import static org.apache.jackrabbit.oak.commons.IOUtils.readFully;
import static org.apache.jackrabbit.oak.segment.file.tar.TarConstants.BLOCK_SIZE;
+import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -138,7 +140,9 @@ public class SegmentTarWriter implements
}
checkState(channel != null); // implied by entry != null
ByteBuffer data = ByteBuffer.allocate(indexEntry.getLength());
- channel.read(data, indexEntry.getPosition());
+ if (readFully(channel, indexEntry.getPosition(), data) < indexEntry.getLength()) {
+ throw new EOFException();
+ }
data.rewind();
return data;
}