Bug 61550: Add more information to exception text and verify that it is thrown

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1819772 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2018-01-01 14:39:26 +00:00
parent 8507286f77
commit 7e04bd33e5
2 changed files with 18 additions and 1 deletions

View File

@ -37,7 +37,8 @@ public class LittleEndianByteArrayInputStream extends ByteArrayInputStream imple
protected void checkPosition(int i) {
if (i > count - pos) {
throw new RuntimeException("Buffer overrun");
throw new RuntimeException("Buffer overrun, having " + count + " bytes in the stream and position is at " + pos +
", but trying to increment position by " + i);
}
}

View File

@ -81,4 +81,20 @@ public final class TestLittleEndianStreams extends TestCase {
assertEquals(0x33, lei.readUByte());
assertEquals(0, lei.available());
}
public void testBufferOverrun() {
byte[] srcBuf = HexRead.readFromString("99 88 77");
LittleEndianInput lei = new LittleEndianByteArrayInputStream(srcBuf);
// do initial read to increment the read index beyond zero
assertEquals(0x8899, lei.readUShort());
// only one byte left, so this should fail
try {
lei.readFully(new byte[4]);
fail("Should catch exception here");
} catch (RuntimeException e) {
assertTrue(e.getMessage().contains("Buffer overrun"));
}
}
}