Skip to content

disallow from_exposed_addr(ptr.addr()) #10383

Open
@KisaragiEffective

Description

@KisaragiEffective

What it does

disallows from_exposed_addr(ptr.addr()) if the code is under #![feature(strict_provenance)]. The argument of from_exposed_addr can be value of expose_addr while addr cannot.

Lint Name

create_ptr_from_unexposed_addr

Category

correctness

Advantage

  • Prevents UB.

Drawbacks

None

Example

#![feature(strict_provenance)]
fn main() {
    let elem = 0u64;
    let x: *const u8 = std::ptr::from_exposed_addr((&elem as *const u64).addr())
}

Could be written as:

    let elem = 0u64;
    let x: *const u8 = std::ptr::from_exposed_addr((&elem as *const u64).exposed_addr())

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-lintArea: New lints

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions