- Reported
-
- Issued
-
- Package
-
bitchomp
(crates.io)
- Type
-
INFO
Unsound
- Categories
-
- Keywords
-
#double-free
- References
-
- Patched
-
no patched versions
Description
Chomp::inner() uses std::ptr::read_unaligned to move out the value from a
raw pointer. If the original value is an owned type (e.g. Box), calling
inner() moves out the ownership, but the original variable will still be
dropped at the end of its scope. This causes the same heap memory to be freed
twice, resulting in a double-free and undefined behavior.
This can be triggered through safe public APIs — Chomp::new() and
Chomp::inner() — with no unsafe required from the caller.
Advisory available under CC0-1.0
license.