diff --git a/activemq-client/src/main/java/org/apache/activemq/util/DataByteArrayInputStream.java b/activemq-client/src/main/java/org/apache/activemq/util/DataByteArrayInputStream.java index 3b42c9f007..0f21696260 100644 --- a/activemq-client/src/main/java/org/apache/activemq/util/DataByteArrayInputStream.java +++ b/activemq-client/src/main/java/org/apache/activemq/util/DataByteArrayInputStream.java @@ -226,7 +226,7 @@ public final class DataByteArrayInputStream extends InputStream implements DataI } public long readLong() throws IOException { - if (pos + 8 >= buf.length ) { + if (pos + 8 > buf.length ) { throw new EOFException(); } long rc = ((long)buf[pos++] << 56) + ((long)(buf[pos++] & 255) << 48) + ((long)(buf[pos++] & 255) << 40) + ((long)(buf[pos++] & 255) << 32); diff --git a/activemq-client/src/test/java/org/apache/activemq/util/DataByteArrayInputStreamTest.java b/activemq-client/src/test/java/org/apache/activemq/util/DataByteArrayInputStreamTest.java index 3ba4a49e67..632bfa30a2 100644 --- a/activemq-client/src/test/java/org/apache/activemq/util/DataByteArrayInputStreamTest.java +++ b/activemq-client/src/test/java/org/apache/activemq/util/DataByteArrayInputStreamTest.java @@ -76,4 +76,15 @@ public class DataByteArrayInputStreamTest { String readBack = in.readUTF(); assertEquals(value, readBack); } + + @Test + public void testReadLong() throws Exception { + DataByteArrayOutputStream out = new DataByteArrayOutputStream(8); + out.writeLong(Long.MAX_VALUE); + out.close(); + + DataByteArrayInputStream in = new DataByteArrayInputStream(out.getData()); + long readBack = in.readLong(); + assertEquals(Long.MAX_VALUE, readBack); + } }