- Reported
-
- Issued
-
- Package
-
enum-map
(crates.io)
- Type
-
INFO
Unsound
- Categories
-
- References
-
- Patched
-
- Unaffected
-
Description
Affected versions of this crate did not require the element type of the Array associated type in the Enum trait to match the array's generic parameter V.
This can result in type confusion, and consequently memory corruption, when a manual Enum implementation declares an Array<V> whose elements are not actually of type V:
struct IntentionallyWrong;
impl Enum for IntentionallyWrong {
type Array<V> = [String; 4];
fn from_usize(_: usize) -> Self {
IntentionallyWrong
}
fn into_usize(self) -> usize {
0
}
}
enum_map! { IntentionallyWrong => 42 };
The flaw was corrected in commit 7a8b815432 by adding a Value = V bound to the Array type in the Enum trait.
Advisory available under CC0-1.0
license.