From 5200c9627f8ea2b0cdf2825056fc70b27460c598 Mon Sep 17 00:00:00 2001 From: JOE1994 Date: Tue, 19 Jan 2021 00:33:07 -0500 Subject: [PATCH] data race in ButtplugFutureStateShared --- crates/buttplug/RUSTSEC-0000-0000.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 crates/buttplug/RUSTSEC-0000-0000.md diff --git a/crates/buttplug/RUSTSEC-0000-0000.md b/crates/buttplug/RUSTSEC-0000-0000.md new file mode 100644 index 0000000..276160e --- /dev/null +++ b/crates/buttplug/RUSTSEC-0000-0000.md @@ -0,0 +1,21 @@ +```toml +[advisory] +id = "RUSTSEC-0000-0000" +package = "buttplug" +date = "2020-12-18" +url = "https://github.com/buttplugio/buttplug-rs/issues/225" +categories = ["memory-corruption"] + +[versions] +# Versions which include fixes for this vulnerability +patched = [">= 1.0.4"] +``` + +# ButtplugFutureStateShared allows data race to (!Send|!Sync) objects + +`ButtplugFutureStateShared` implements `Send` & `Sync` regardless of `T`. + +If `T: !Send` for `ButtplugFutureStateShared`, it is possible to move non-Send types across thread boundaries (e.g. `T`=`Rc`) and lead to undefined behavior. +If `T: !Sync` for `ButtplugFutureStateShared`, it is possible to cause data race to `T` (e.g. `T`=`Arc>`) and lead to undefined behavior. + +The flaw was corrected in version 1.0.4 by removing manual implementations of `Send`/`Sync` for `ButtplugFutureStateShared` to let rustc generate auto trait implementations with correct trait bounds on `T`.