RUSTSEC-2020-0027 (unsound) on 2020-06-01: traitobject assumes the layout of fat pointers

This crate gets the data pointer from fat pointers assuming that the first element in a fat pointer is the data pointer. This is currently true, but it may change in a future Rust version, leading to memory corruption.

This has been fixed in the master branch of the crate, but is has not been released into crates.io.

CVE-2020-35881

GHSA-j79j-cx3h-g27h

This review is from Crev, a distributed system for code reviews. To add your review, set up cargo-crev.

0.1.0 (current) Rating: Negative + Unmaintained Thoroughness: None Understanding: None

by Nemo157 on 2020-02-10

Has future compat warnings over a year old, and given that it is unmaintained there is very little possibility that these will be fixed.

warning: conflicting implementations of trait `Trait` for type `(dyn std::marker::Send + std::marker::Sync + 'static)`: (E0119)
   |
71 | unsafe impl Trait for ::std::marker::Send + Sync { }
   | ------------------------------------------------ first implementation here
72 | unsafe impl Trait for ::std::marker::Send + Send + Sync { }
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `(dyn std::marker::Send + std::marker::Sync + 'static)`
   |
   = note: `#[warn(order_dependent_trait_objects)]` on by default
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #56484 <https://github.com/rust-lang/rust/issues/56484>

These reviews are from cargo-vet. To add your review, set up cargo-vet and submit your URL to its registry.

cargo-vet does not verify reviewers' identity. You have to fully trust the source the audits are from.

unknown

May have been packaged automatically without a review


Crates in the crates.io registry are tarball snapshots uploaded by crates' publishers. The registry is not using crates' git repositories. There is absolutely no guarantee that the repository URL declared by the crate belongs to the crate, or that the code in the repository is the code inside the published tarball.

To review the actual code of the crate, it's best to use cargo crev open traitobject. Alternatively, you can download the tarball of traitobject v0.1.0 or view the source online.