panic safety fix: guard against double drop #10
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello 🦀 ,
we (Rust group @sslab-gatech) found a memory-safety/soundness issue in this crate while scanning Rust code on crates.io for potential vulnerabilities. This PR contains a fix for the issue.
Issue Description
glsl-layout/src/array.rs
Lines 177 to 199 in 119f5ec
As the comments in the code indicates, the code above needs a patch for panic safety.
If a panic happens within
f
,the item copied by
ptr::read()
can be dropped twice since the ownership of the item is duplicated.Suggested Fix
I used
ManuallyDrop<_>
to containvalues
, in order to guard against double drop.Thank you for reviewing this PR 👍
This change is