The read_scalar
and read_scalar_at
functions are unsound
because they allow transmuting values without unsafe
blocks.
The following example shows how to create a dangling reference:
fn main() {
#[derive(Copy, Clone, PartialEq, Debug)]
struct S(&'static str);
impl flatbuffers::EndianScalar for S {
fn to_little_endian(self) -> Self { self }
fn from_little_endian(self) -> Self { self }
}
println!("{:?}", flatbuffers::read_scalar::<s>(&[1; std::mem::size_of::<s>()]));
}
CPE | Name | Operator | Version |
---|---|---|---|
flatbuffers | lt | 2.0.0 | |
flatbuffers | ge | 0.4.0 |