GitHub Advisoryadvisory · crates.io
GHSA-43w2-9j62-hq99 Buffer overflow in SmallVec::insert_many
CRITICAL
Official page ↗
- Aliases
- CVE-2021-25900
- Ecosystem
- crates.io
- Packages
- smallvec
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-787
- Reviewed
- 2022-06-17
Affected packages
• crates.io smallvec: >= 0.6.3, < 0.6.14 → fixed in 0.6.14
• crates.io smallvec: >= 1.0.0, < 1.6.1 → fixed in 1.6.1
Description
A bug in the SmallVec::insert_many method caused it to allocate a buffer that was smaller than needed. It then wrote past the end of the buffer, causing a buffer overflow and memory corruption on the heap. This bug was only triggered if the iterator passed to insert_many yielded more items than the lower bound returned from its size_hint method.
The flaw was corrected in smallvec 0.6.14 and 1.6.1, by ensuring that additional space is always reserved for each item inserted. The fix also simplified the implementation of insert_many to use less unsafe code, so it is easier to verify its correctness.
Related
Alias · CVE (1)
- CVE-2021-25900 An issue was discovered in the smallvec crate before 0.6.14 and 1.x before 1.6.1 for Rust. vulnerability
Weakness · CWE (1)
- CWE-787 Out-of-bounds Write weakness
References
- https://nvd.nist.gov/vuln/detail/CVE-2021-25900 advisory
- https://github.com/servo/rust-smallvec/issues/252 web
- https://github.com/servo/rust-smallvec/commit/5757ac500d4e544485d796b542e4e589749c291b web
- https://github.com/servo/rust-smallvec/commit/9998ba0694a6b51aa6604748b00b6a98f0a0039e web
- https://github.com/servo/rust-smallvec package
- https://rustsec.org/advisories/RUSTSEC-2021-0003.html web