smallvec
"Small vector" optimization for Rust: store up to a small number of items on the stack
Activity
- Latest release
- 2d ago
- Total releases
- 80
- Cadence
- ~36 days
- Last 12 months
- 5
Reach
- Downloads
- 1168.2M
- Stars
- 1.7k
Details
- License
- MIT OR Apache-2.0
- First release
- Apr 06, 2015
| Version | Released | |
|---|---|---|
1.16.1
patch
| ||
2.0.0-alpha.13
pre
|
2.0.0-alpha.13
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.16.0
minor
| ||
1.15.2
unknown
|
1.15.2
unknown
Dependencies (8)
Changelog
Compare changes
|
|
2.0.0-alpha.12
unknown
| ||
1.15.1
unknown
|
1.15.1
unknown
Dependencies (8)
Changelog
Compare changes
|
|
1.15.0
unknown
|
1.15.0
unknown
Dependencies (8)
Changelog
Compare changes
|
|
2.0.0-alpha.11
unknown
| ||
1.14.0
unknown
| ||
2.0.0-alpha.10
unknown
| ||
2.0.0-alpha.9
unknown
| ||
2.0.0-alpha.8
unknown
| ||
2.0.0-alpha.7
unknown
| ||
2.0.0-alpha.6
unknown
| ||
2.0.0-alpha.5
unknown
| ||
1.13.2
unknown
| ||
2.0.0-alpha.4
unknown
| ||
2.0.0-alpha.3
unknown
| ||
1.13.1
unknown
| ||
1.13.0
unknown
yanked
| ||
2.0.0-alpha.2
unknown
| ||
1.12.0
unknown
| ||
1.11.2
unknown
| ||
2.0.0-alpha.1
unknown
| ||
1.11.1
unknown
| ||
1.11.0
unknown
| ||
1.10.0
unknown
| ||
1.9.0
unknown
| ||
1.8.1
unknown
| ||
1.8.0
unknown
| ||
1.7.0
unknown
| ||
1.6.1
unknown
| ||
0.6.14
unknown
| ||
1.6.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.5.1
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.5.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.4.2
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.4.1
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.4.0
unknown
yanked
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.3.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.2.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.1.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.13
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
1.0.0
unknown
1 CVE
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.12
unknown
2 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.11
unknown
2 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.10
unknown
2 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.9
unknown
yanked
4 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15551
GHSA-mm7v-vpv8-xfc3
RUSTSEC-2019-0009
Aug 25, 2021
Double free in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15554
GHSA-69gw-hgj3-45m7
RUSTSEC-2019-0012
Aug 25, 2021
Memory corruption in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value less than the current capacity causes corruption of memory allocator data structures. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.8
unknown
yanked
4 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15551
GHSA-mm7v-vpv8-xfc3
RUSTSEC-2019-0009
Aug 25, 2021
Double free in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15554
GHSA-69gw-hgj3-45m7
RUSTSEC-2019-0012
Aug 25, 2021
Memory corruption in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value less than the current capacity causes corruption of memory allocator data structures. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References Updated Nov 08, 2023 · Source: OSV.dev | ||
0.6.7
unknown
yanked
4 CVEs
CVE-2021-25900
GHSA-43w2-9j62-hq99
RUSTSEC-2021-0003
May 24, 2022
Buffer overflow in SmallVec::insert_many
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
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. Fixed in
0.6.14
1.6.1
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2018-25023
GHSA-55m5-whcv-c49c
GHSA-66p5-j55p-32r9
RUSTSEC-2018-0018
Jan 06, 2022
Use of Uninitialized Resource in smallvec
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
Affected versions of this crate called mem::uninitialized() to create values of a user-supplied type T. This is unsound e.g. if T is a reference type (which must be non-null and thus may not remain uninitialized). The flaw was corrected by avoiding the use of mem::uninitialized(), using MaybeUninit instead. Fixed in
0.6.13
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15551
GHSA-mm7v-vpv8-xfc3
RUSTSEC-2019-0009
Aug 25, 2021
Double free in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References
Updated Nov 08, 2023 · Source: OSV.dev
CVE-2019-15554
GHSA-69gw-hgj3-45m7
RUSTSEC-2019-0012
Aug 25, 2021
Memory corruption in smallvec
9.8
/ 10
Critical
Network
Low
None
None
Unchanged
High
High
High
Attempting to call grow on a spilled SmallVec with a value less than the current capacity causes corruption of memory allocator data structures. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution. Fixed in
0.6.10
References Updated Nov 08, 2023 · Source: OSV.dev |