mirror of https://github.com/apache/poi.git
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:
parent
8507286f77
commit
7e04bd33e5
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue