Audit the use of unsafe in method.rs#410
Merged
seanmonstar merged 3 commits intohyperium:masterfrom May 7, 2020
Merged
Conversation
The tests for invalid methods test invalid byte sequences including invalid utf-8 and valid utf-8 that uses invalid characters for a Method. The tests for valid methods test both short and long extension methods. Also extract all of the unit tests into a "test" module.
Extract the inner types for ExtensionAllocated and ExtensionInline into a separate extension module that has the supporting functions as non-public elements. This refactoring moves the use of "unsafe" into this new "extension" module and provides a safe wrappers around the two uses of "unsafe".
The internal InlineExtension and AllocatedExtension types have invariants that ensure that the two uses of "unsafe" in the "extension" submodule of "method" are safe. This documents those invariants for future reference.
9 tasks
seanmonstar
approved these changes
May 7, 2020
Member
seanmonstar
left a comment
There was a problem hiding this comment.
I really dig the encapsulation into an extension module here, nice work!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Refactors the supporting types for Method to extract the uses of
unsafeinto a smaller leaf sub-module (calledextension) that encapsulates these two uses ofunsafeinto a safe abstraction. Documents the invariants of the safe abstraction that ensure that the uses ofunsafeare sound.