Skip to content

Unsound usages of unsafe implementation from u8 to [u8; 3] #102

@llooFlashooll

Description

@llooFlashooll

Hi, I am scanning the mrusty in the latest version with my own static analyzer tool.

Unsafe conversion found at: src/mruby.rs#L1184

   extern "C" fn run_protected(mrb: *const MrState, data: MrValue) -> MrValue {
      unsafe {
            let ptr = data.to_ptr().unwrap();
            let args = *mem::transmute::<*const u8, *const [*const u8; 3]>(ptr);

This unsound implementation would create a misalignment issues if the type size of u8 is smaller than the type size of [u8; 3].

This would potentially cause undefined behaviors in Rust. If we further manipulate the problematic converted types, it would potentially lead to different consequences such as access out-of-bound. I am reporting this issue for your attention.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions