Unsound MediumRUSTSEC-2022-0017 · array-macro
RUSTSEC-2022-0017: `array!` macro is unsound when its length is impure constant
Short answerarray-macro has an API that can cause undefined behaviour from safe code: `array!` macro is unsound when its length is impure constant. Fixed in 2.1.2.
| Crate | array-macro |
|---|---|
| Type | Unsound (code-execution, memory-corruption, memory-exposure) |
| Affected versions | From 2.1.0 before 2.1.2. |
| Fixed in | 2.1.2 |
| Severity | Medium (GitHub rating) |
| Published | 2022-04-27 |
| Last changed | 2023-11-08 |
| Also known as | GHSA-7v4j-8wvr-v55r |
What to do
- See which version you have:
cargo tree -i array-macro(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p array-macro. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for examplearray-macro = "2.1.2") 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
Affected versions of this crate did substitute the array length provided by an user at compile-time multiple times.
When an impure constant expression is passed as an array length (such as a result of an impure procedural macro), this can result in the initialization of an array with uninitialized types, which in turn can allow an attacker to execute arbitrary code.
The flaw was corrected in commit d5b63f72 by making sure that array length is substituted just once.
References
- Package: crates.io/crates/array-macro
- Advisory: rustsec.org/advisories/RUSTSEC-2022-0017.html
- Report: gitlab.com/KonradBorowski/array-macro/-/issues/5
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 array-macro
Up next
Same cratearray-macro: security historyEvery advisory for this crate, and whether it is safe to use today.Read it next →Did this answer your question?