aboutsummaryrefslogtreecommitdiff
path: root/java/org/brotli/dec/BitReaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/brotli/dec/BitReaderTest.java')
-rw-r--r--java/org/brotli/dec/BitReaderTest.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/java/org/brotli/dec/BitReaderTest.java b/java/org/brotli/dec/BitReaderTest.java
index fa57640..da59ebc 100644
--- a/java/org/brotli/dec/BitReaderTest.java
+++ b/java/org/brotli/dec/BitReaderTest.java
@@ -32,4 +32,23 @@ public class BitReaderTest {
}
fail("BrotliRuntimeException should have been thrown by BitReader.checkHealth");
}
+
+ @Test
+ public void testAccumulatorUnderflowDetected() {
+ State reader = new State();
+ Decode.initState(reader, new ByteArrayInputStream(new byte[8]));
+ // 65 bits is enough for both 32 and 64 bit systems.
+ BitReader.readBits(reader, 13);
+ BitReader.readBits(reader, 13);
+ BitReader.readBits(reader, 13);
+ BitReader.readBits(reader, 13);
+ BitReader.readBits(reader, 13);
+ try {
+ BitReader.fillBitWindow(reader);
+ } catch (IllegalStateException ex) {
+ // This exception is expected.
+ return;
+ }
+ fail("IllegalStateException should have been thrown by 'broken' BitReader");
+ }
}