Inventory fails to prohibit standard library access prior to initialization of Rust standard library runtime
Moderate severity
GitHub Reviewed
Published
Sep 11, 2023
to the GitHub Advisory Database
•
Updated Sep 11, 2023
Description
Published to the GitHub Advisory Database
Sep 11, 2023
Reviewed
Sep 11, 2023
Last updated
Sep 11, 2023
Affected versions allow arbitrary caller-provided code to execute before the lifetime of
main
.If the caller-provided code accesses particular pieces of the standard library that require an initialized Rust runtime, such as
std::io
orstd::thread
, these may not behave as documented. Panics are likely; UB is possible.The flaw was corrected by enforcing that only code written within the
inventory
crate, which is guaranteed not to access runtime-dependent parts of the standard library, runs beforemain
. Caller-provided code is restricted to running at compile time.References