UnsoundRUSTSEC-2026-0139 · metacall
RUSTSEC-2026-0139: Null-pointer dereference and double-free via safe APIs
Short answermetacall has an API that can cause undefined behaviour from safe code: Null-pointer dereference and double-free via safe APIs. No fixed version yet.
| Crate | metacall |
|---|---|
| Type | Unsound (memory-corruption) |
| Affected versions | Every version. |
| Fixed in | none |
| Severity | not scored |
| Published | 2026-05-02 |
| Last changed | 2026-05-13 |
| Also known as | none |
What to do
- Find who pulls it in:
cargo tree -i metacall. - Avoid the affected API, or replace the crate.
Details from the advisory
Two soundness violations exist in the Rust bindings for MetaCall:
**Null-pointer dereference:** MetaCallFuture::new_raw() accepts a raw pointer without validation. The Debug impl calls Box::from_raw(self.data) on it. Passing a null pointer causes the Debug impl to construct a NonNull from null, producing undefined behavior.
**Double-free:** MetaCallPointer::clone() shares the same rust_value raw pointer between the clone and the original. Calling get_value_untyped() on both clones calls Box::from_raw on the same pointer twice, resulting in a double-free.
Both issues can be triggered through safe public APIs , MetaCallFuture::new_raw(), MetaCallPointer::new(), clone(), and get_value_untyped() , with no unsafe required from the caller.
References
- Package: crates.io/crates/metacall
- Advisory: rustsec.org/advisories/RUSTSEC-2026-0139.html
- Report: github.com/metacall/core/issues/618
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Other advisories for metacall
Up next
Same cratemetacall: security historyEvery advisory for this crate, and whether it is safe to use today.Read it next →Did this answer your question?