diff --git a/crates/crossbeam-channel/RUSTSEC-0000-0000.md b/crates/crossbeam-channel/RUSTSEC-0000-0000.md new file mode 100644 index 000000000..657eb3da4 --- /dev/null +++ b/crates/crossbeam-channel/RUSTSEC-0000-0000.md @@ -0,0 +1,16 @@ +```toml +[advisory] +id = "RUSTSEC-0000-0000" +package = "crossbeam-channel" +categories = ["memory-corruption"] +date = "2020-06-26" +url = "https://github.com/crossbeam-rs/crossbeam/pull/533" + +[versions] +patched = [">= 0.4.4"] +unaffected = ["< 0.4.3"] +``` + +# Undefined Behavior in bounded channel + +The affected version of this crate's the `bounded` channel incorrectly assumes that `Vec::from_iter` has allocated capacity that same as the number of iterator elements. `Vec::from_iter` does not actually guarantee that and may allocate extra memory. The destructor of the `bounded` channel reconstructs `Vec` from the raw pointer based on the incorrect assumes described above. This is unsound and causing deallocation with the incorrect capacity when `Vec::from_iter` has allocated different sizes with the number of iterator elements.