diff --git a/source/de/anomic/kelondro/index/RowSet.java b/source/de/anomic/kelondro/index/RowSet.java index 35f51ac53..bda0c4c1c 100644 --- a/source/de/anomic/kelondro/index/RowSet.java +++ b/source/de/anomic/kelondro/index/RowSet.java @@ -24,8 +24,6 @@ package de.anomic.kelondro.index; -import java.io.DataInput; -import java.io.IOException; import java.util.Iterator; import java.util.Random; @@ -63,26 +61,19 @@ public class RowSet extends RowCollection implements ObjectIndex, Iterable= 14 : "b.length = " + b.length; + assert b.length >= exportOverheadSize : "b.length = " + b.length; + if (b.length < exportOverheadSize) return new RowSet(rowdef, 0); final int size = (int) NaturalOrder.decodeLong(b, 0, 4); + assert size >= 0 : "size = " + size; + if (size < 0) return new RowSet(rowdef, 0); final int orderbound = (int) NaturalOrder.decodeLong(b, 10, 4); + assert orderbound >= 0 : "orderbound = " + orderbound; + if (orderbound < 0) return new RowSet(rowdef, 0); final byte[] chunkcache = new byte[size * rowdef.objectsize]; assert b.length - exportOverheadSize == size * rowdef.objectsize; - System.arraycopy(b, 14, chunkcache, 0, chunkcache.length); + if (b.length - exportOverheadSize != size * rowdef.objectsize) return new RowSet(rowdef, 0); + System.arraycopy(b, exportOverheadSize, chunkcache, 0, chunkcache.length); return new RowSet(rowdef, size, chunkcache, orderbound); }