HistoryEdit

RUSTSEC-2020-0120

Decoder<R> can carry R: !Send to other threads

Reported
Issued
Package
libsbc (crates.io)
Type
INFO Unsound
Categories
Aliases
Details
https://github.com/mvertescher/libsbc-rs/issues/4
CVSS Score
8.1 HIGH
CVSS Details
Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Patched
  • >=0.1.5

Description

Affected versions of this crate implements Send for Decoder<R> for any R: Read. This allows Decoder<R> to contain R: !Send and carry (move) it to another thread.

This can result in undefined behavior such as memory corruption from data race on R, or dropping R = MutexGuard<_> from a thread that didn't lock the mutex.

The flaw was corrected in commit a34d6e1 by adding trait bound R: Send to the Send impl for Decoder<R>.