universal-automata/liblevenshtein-java

ProtobufSerializer throws InvalidProtocolBufferException when dictionary depth > 100

dylon opened this issue · 1 comments

dylon commented

When the dictionary depth is greater than 100, the default behavior of protobuf's CodedInputStream is to throw an exception. The recursion depth limit needs to be increased, probably to Integer.MAX_VALUE.

dylon commented
com.google.protobuf.InvalidProtocolBufferException: Protocol message had too many levels of nesting.  May be malicious.  Use CodedInputStream.setRecursionLimit() to increase the depth limit.
        at com.google.protobuf.InvalidProtocolBufferException.recursionLimitExceeded(InvalidProtocolBufferException.java:104)
        at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:491)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge.<init>(LibLevenshteinProtos.java:195)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge.<init>(LibLevenshteinProtos.java:149)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge$1.parsePartialFrom(LibLevenshteinProtos.java:657)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge$1.parsePartialFrom(LibLevenshteinProtos.java:651)
        at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:495)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode.<init>(LibLevenshteinProtos.java:94)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode.<init>(LibLevenshteinProtos.java:47)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$1.parsePartialFrom(LibLevenshteinProtos.java:1284)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$1.parsePartialFrom(LibLevenshteinProtos.java:1278)
        at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:495)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge.<init>(LibLevenshteinProtos.java:195)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge.<init>(LibLevenshteinProtos.java:149)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge$1.parsePartialFrom(LibLevenshteinProtos.java:657)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode$Edge$1.parsePartialFrom(LibLevenshteinProtos.java:651)
        at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:495)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode.<init>(LibLevenshteinProtos.java:94)
        at com.github.dylon.liblevenshtein.levenshtein.LibLevenshteinProtos$DawgNode.<init>(LibLevenshteinProtos.java:47)
...