diff options
Diffstat (limited to 'java/org/brotli/dec/BitReaderTest.java')
-rw-r--r-- | java/org/brotli/dec/BitReaderTest.java | 19 |
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"); + } } |