tokio::io::ReadHalf<T>::unsplit can violate the
The soundness issue is described in the tokio/issues#5372
Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf)
is unusual, combined with the difficulty of making any arbitrary use-after-free
exploitable in Rust without doing a lot of careful alignment of data types in
the surrounding code.
io-util is also required to be enabled to trigger this
Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e
and carllerche appropriately responding and fixing the soundness bug.
Tokio before 0.2.0 used
futures 0.1 that did not have
Pin, so it is not
affected by this issue.
Advisory available under CC0-1.0