Rust advisories / lexical
Unsound LowRUSTSEC-2023-0055 · lexical
RUSTSEC-2023-0055: Multiple soundness issues
Short answerlexical has an API that can cause undefined behaviour from safe code: Multiple soundness issues. Fixed in 7.0.0.
| Crate | lexical |
|---|---|
| Type | Unsound |
| Affected versions | Before 7.0.0. |
| Fixed in | 7.0.0 |
| Severity | Low (GitHub rating) |
| Published | 2023-09-03 |
| Last changed | 2026-02-04 |
| Also known as | GHSA-c2hm-mjxv-89r4 |
What to do
- See which version you have:
cargo tree -i lexical(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p lexical. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for examplelexical = "7.0.0") or update the dependency that pulls it in. - Check again with
cargo audit, or paste your Cargo.lock into our Cargo.toml checker.
Details from the advisory
lexical contains multiple soundness issues:
1. Bytes::read() allows creating instances of types with invalid bit patterns 1. BytesIter::read() advances iterators out of bounds 1. The BytesIter trait has safety invariants but is public and not marked unsafe 1. write_float() calls MaybeUninit::assume_init() on uninitialized data, which is is not allowed by the Rust abstract machine 1. radix() calls MaybeUninit::assume_init() on uninitialized data, which is is not allowed by the Rust abstract machine
The crate also has some correctness issues.
Alternatives
For quickly parsing floating-point numbers third-party crates are no longer needed. A fast float parsing algorithm by the author of lexical has been merged into libcore.
For quickly parsing integers, consider atoi and btoi crates (100% safe code). atoi_radix10 provides even faster parsing, but only with -C target-cpu=native, and at the cost of some unsafe.
For formatting integers in a #[no_std] context consider the numtoa crate.
For working with big numbers consider num-bigint and num-traits.
References
- Package: crates.io/crates/lexical
- Advisory: rustsec.org/advisories/RUSTSEC-2023-0055.html
- Report: github.com/Alexhuszagh/rust-lexical/issues/102
- Report: github.com/Alexhuszagh/rust-lexical/issues/101
- Report: github.com/Alexhuszagh/rust-lexical/issues/95
- Report: github.com/Alexhuszagh/rust-lexical/issues/104
- Report: github.com/Alexhuszagh/rust-lexical/issues/126
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Up next
Are you affected?Check your whole dependency treePaste Cargo.lock: every advisory, for your exact versions.Read it next →Also worth your time
Did this answer your question?