I was working on a project that uses MiniDNS, a DNS services library for Java. I noticed I was getting a strange error message when loading certain requests, with no noticeable correlation between them:
java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 32 at minidns.core@0.3.3/org.minidns.record.NSEC.createTypeBitMap(NSEC.java:104) at minidns.core@0.3.3/org.minidns.record.NSEC3.<init>(NSEC3.java:132) at minidns.core@0.3.3/org.minidns.record.NSEC3.<init>(NSEC3.java:136) at minidns.core@0.3.3/org.minidns.record.NSEC3.parse(NSEC3.java:119) at minidns.core@0.3.3/org.minidns.record.Record.parse(Record.java:387) at minidns.core@0.3.3/org.minidns.dnsmessage.DnsMessage.<init>(DnsMessage.java:413) <snip>
This is an edge case where an unknown DNS response type being returned for an NSEC3 answer gets “un-resolved” down the road and crashes the parser. It has been fixed in 0.4.0-alpha.