VDB
Sign up
LOW

GHSA-h7h7-6mx3-r89v

Fyrox has unsound usages of `Vec::from_raw_parts`

Details

The library provides a public safe API `transmute_vec_as_bytes`, which incorrectly assumes that any generic type `T` could have stable layout, causing to uninitialized memory exposure if the users pass any types with padding bytes as `T` and cast it to `u8` pointer.

In the [issue](https://github.com/FyroxEngine/Fyrox/issues/630), we develop a PoC to show passing struct type to `transmute_vec_as_bytes` could lead to undefined behavior with `Vec::from_raw_parts`.

The developers provide a patch by changing trait of `Copy` to `Pod`, which can make sure `T` should be plain data. This was patched in the latest version of [master](https://github.com/FyroxEngine/Fyrox/blob/3f9ad6f9667047dac051b0e97d544e5b38e5ae72/fyrox-core/src/lib.rs#L351-L360) branch, but still not on the latest release (0.28.1).

Are you affected?

Enter the version of the package you're using.

Affected packages

crates.io/fyrox-core
Introduced in: 0.28.1Fixed in: 0.36

Upgrade fyrox-core to 0.36 or newer (ecosystem crates.io).

References