diff --git a/crates/futures-util/RUSTSEC-0000-0000.md b/crates/futures-util/RUSTSEC-2020-0062.md similarity index 95% rename from crates/futures-util/RUSTSEC-0000-0000.md rename to crates/futures-util/RUSTSEC-2020-0062.md index 39641e8e..fda28b8c 100644 --- a/crates/futures-util/RUSTSEC-0000-0000.md +++ b/crates/futures-util/RUSTSEC-2020-0062.md @@ -1,25 +1,25 @@ -```toml -[advisory] -id = "RUSTSEC-0000-0000" -package = "futures-util" -date = "2020-01-24" -url = "https://github.com/rust-lang/futures-rs/issues/2050" -categories = ["memory-corruption"] -keywords = ["concurrency", "memory-corruption", "memory-management"] - -[affected] -functions = { "futures_util::stream::FuturesUnordered" = [">= 0.3.0"] } - -[versions] -patched = [">= 0.3.2"] -unaffected = ["< 0.3.0"] -``` - -# Improper `Sync` implementation on `FuturesUnordered` in futures-utils can cause data corruption -Affected versions of the crate had an unsound `Sync` implementation on the `FuturesUnordered` structure, which used a `Cell` for -interior mutablity without any code to handle synchronized access to the underlying task list's length and head safely. - -This could of lead to data corruption since two threads modifying the list at once could see incorrect values due to the lack -of access synchronization. - -The issue was fixed by adding access synchronization code around insertion of tasks into the list. +```toml +[advisory] +id = "RUSTSEC-2020-0062" +package = "futures-util" +date = "2020-01-24" +url = "https://github.com/rust-lang/futures-rs/issues/2050" +categories = ["memory-corruption"] +keywords = ["concurrency", "memory-corruption", "memory-management"] + +[affected] +functions = { "futures_util::stream::FuturesUnordered" = [">= 0.3.0"] } + +[versions] +patched = [">= 0.3.2"] +unaffected = ["< 0.3.0"] +``` + +# Improper `Sync` implementation on `FuturesUnordered` in futures-utils can cause data corruption +Affected versions of the crate had an unsound `Sync` implementation on the `FuturesUnordered` structure, which used a `Cell` for +interior mutablity without any code to handle synchronized access to the underlying task list's length and head safely. + +This could of lead to data corruption since two threads modifying the list at once could see incorrect values due to the lack +of access synchronization. + +The issue was fixed by adding access synchronization code around insertion of tasks into the list.