You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
these TryInto implementations are public so this can be easily demonstrated by using miri with the code let b: BlendMode = 3.try_into() (this calls <BlendMode as TryFrom<u32>>::try_from(3) with the invalid value 3) for example:
error: Undefined Behavior: constructing invalid value at .<enum-tag>: encountered 0x00000003, but expected a valid enum tag
--> /home/antoni/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sdl2-0.36.0/src/sdl2/render.rs:172:27
|
172 | Ok(match unsafe { transmute(n) } {
| ^^^^^^^^^^^^ constructing invalid value at .<enum-tag>: encountered 0x00000003, but expected a valid enum tag
|
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
= note: BACKTRACE:
= note: inside `<sdl2::render::BlendMode as std::convert::TryFrom<u32>>::try_from` at /home/antoni/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sdl2-0.36.0/src/sdl2/render.rs:172:27: 172:39
= note: inside `<u32 as std::convert::TryInto<sdl2::render::BlendMode>>::try_into` at /home/antoni/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/convert/mod.rs:798:9: 798:26
The text was updated successfully, but these errors were encountered:
in several places in the code a
u32
is transmuted to enums without any checks. examples includerust-sdl2/src/sdl2/render.rs
Line 118 in 146cff6
rust-sdl2/src/sdl2/render.rs
Line 172 in 146cff6
rust-sdl2/src/sdl2/pixels.rs
Line 448 in 146cff6
these
TryInto
implementations are public so this can be easily demonstrated by using miri with the codelet b: BlendMode = 3.try_into()
(this calls<BlendMode as TryFrom<u32>>::try_from(3)
with the invalid value 3) for example:The text was updated successfully, but these errors were encountered: