duesee / imap-codec

Rock-solid and complete codec for IMAP
Apache License 2.0
35 stars 13 forks source link

fix: Fix `command` fuzzer #410

Closed duesee closed 5 months ago

duesee commented 6 months ago

We have a fixed recursion limit and the serialization adds one more recursion. Thus, we cannot parse what we serialized.

[!] Input:      zSzF SEARCH NOT NOT NOT NOT NOT NOT NOT NOT cC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ NOT cC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJonnoo\r\n0o\r\n0NOT NO
[!] Consumed:   zSzF SEARCH NOT NOT NOT NOT NOT NOT NOT NOT cC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ NOT cC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJonnoo\r\n
[!] Parsed1: Command { tag: Tag("zSzF"), body: Search { charset: None, criteria: And([Not(Not(Not(Not(Not(Not(Not(Not(Cc(Atom(AtomExt("0!!!"))))))))))), Keyword(Atom("oLJJJJJJJJJJ!")), Keyword(Atom("oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ")), Not(Cc(Atom(AtomExt("0!!!")))), Keyword(Atom("oLJJJJJJJJJJ!")), Keyword(Atom("oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJonnoo"))]+), uid: false } }
[!] Serialized: zSzF SEARCH (NOT NOT NOT NOT NOT NOT NOT NOT CC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ NOT CC 0!!! KEYWORD oLJJJJJJJJJJ! KEYWORD oLJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJonnoo)\r\n