model-checking / kani

Kani Rust Verifier
https://model-checking.github.io/kani
Apache License 2.0
2.22k stars 89 forks source link

Audit Vtable generation for dynamic traits #299

Open danielsn opened 3 years ago

danielsn commented 3 years ago

RMC handles dynamic traits by making a vtable for each trait, which maps virtual calls to the function pointer that implements the call. As of 2021-09-01, our implementation of dynamic traits has no known soundness issues.

Likelihood:

Due to the complexity of this feature, there may be currently-unknown soundness issues.

Mitigation:

avanhatt commented 3 years ago

Updated description to match current state.

adpaco-aws commented 3 years ago

RMC is now using --pointer-check by default (#263)

avanhatt commented 3 years ago

Updated to reflect that --pointer-check is used by default and that for closures we only fail for boxed closures.

avanhatt commented 3 years ago

Updated to reflect that all known cases of boxed closures now work.

avanhatt commented 3 years ago

As of 2021-09-01, all known soundness issues specific to dynamic traits objects and vtables have been resolved.

However, two issues to note: