fix: Capability atom conversion for CONDSTORE / QRESYNC#695
Conversation
Pull Request Test Coverage Report for Build 22220288471Details
💛 - Coveralls |
|
Oh wow... that's... embarassing. I'm 99% sure our structured fuzz testing would have catched the bug. Thing is: I believe I never ran a fuzz campaign after introducing the extension as we are still on Thank you very much! @soywod Would a new release help you? :-) |
|
No need for release at the moment, it can definitely wait! |
|
Ah, I remember. Running ... ... quickly reveals the few remaining issues with Since the fuzzer finds this instantly -- and crashes, as it should :-) -- I couldn't enable fuzzing of this extension just yet. Good: The fuzzer won't let us stabilize this extension as is. Bad: We have to fix at some point. All help would be greatly appreciated! |
|
Awesome, thanks for the quick review! I'm still new to Rust (and contributing to open source in general) but I'll be happy to help with #633 and other issues I find as well, since I'll be helping out with the CONDSTORE implementation downstream in himalaya/mirador/neverest as well. Appreciate all the great work you guys do here! |
|
That would be awesome! Since you are new to Rust and open source: Your PR + description were perfect! :-) Should you want to tackle #633, I would ask to first discuss together how we want to tackle it. The Very happy to discuss it further! |
The atoms
CONDSTOREandQRESYNCare incorrectly converted toData::Capability::Unselectinstead ofData::Capability::CondStoreandData::Capability::QResyncrespectively.I noticed this bug (introduced in #629) when trying to use pimalaya/imap-client to list capabilities and it reported my IMAP server didn't have CONDSTORE, even though other clients report it correctly.
Here is a small proof-of-concept example to demonstrate the bug / fix:
$ cargo run --features ext_condstore_qresync --example condstore_qresyncBefore:
After: