rust-secure-code / safety-dance

Auditing crates for unsafe code which can be safely replaced

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Request Clippy lints for antipatterns we discover

Shnatsel opened this issue · comments

We encounter a lot of unsafe code that can be converted to safe. We should start cataloguing the antipatterns we discover and document how to convert them to safe code.

Also, for every antipattern discovered we should open an issue against Clippy to detect it - that way we can effectively prevent such cases in the future. This already has precedent, see e.g. rust-lang/rust-clippy#3237

One thing is that uninitialized() can be replaced with zeroed() in all cases. All of them. Any time memory can't be zeroed() it couldn't have been uninitialized() anyway.

So even if they don't want to switch to MaybeUninit (eg: want to support an old compiler), they can switch to zeroed(). It's not definitely safe, but it safer at least.

I thought "why document stuff if we can ask for clippy lints right away?"

And then this happened: rust-lang/rust-clippy#4483

I'll need to review the unsafe code I've already purged, but this is already a big, multi-faceted work item right there.

Requested another lint based on a bug in real-world code: rust-lang/rust-clippy#4774
And a compiler warning, because it looks easy to reliably detect and dangerous enough to warn against it by default, without relying on optional tooling: rust-lang/rust#66136

I've also requested improvements to an existing lint, although this one might be tricky: rust-lang/rust-clippy#4765

I already requested a lint for the problem case I hit XD

gotta check existing issues!