Skip to content

Contracts & Harnesses for byte_add, byte_offset, and byte_offset_from #103

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 27 commits into from
Dec 3, 2024

Conversation

danielhumanmod
Copy link

@danielhumanmod danielhumanmod commented Oct 5, 2024

Description:

This PR introduces function contracts and proof harness for the NonNull pointer in the Rust core library. Specifically, it verifies three new APIs—byte_offset, byte_add, and byte_offset_from with Kani. These changes enhance the functionality of pointer arithmetic and verification for NonNull pointers.

Changes Overview:

Covered APIs:

  1. NonNull::byte_add: Adds a specified byte offset to a pointer.
  2. NonNull::byte_offset: Allows calculating an offset from a pointer in bytes.
  3. NonNull::byte_offset_from: Calculates the distance between two pointers in bytes.

Proof harness:

  1. non_null_byte_add_proof
  2. non_null_byte_offset_proof
  3. non_null_byte_offset_from_proof

Towards #53

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.

@danielhumanmod danielhumanmod changed the title Contracts & Harnesses for byte_add, byte_offset, and byte_offset_from Contracts & Harnesses for byte_add, byte_offset, and byte_offset_from Oct 6, 2024
@danielhumanmod danielhumanmod marked this pull request as ready for review October 9, 2024 23:48
@danielhumanmod danielhumanmod requested a review from a team as a code owner October 9, 2024 23:48
@danielhumanmod
Copy link
Author

Thanks for your suggestion @zhassan-aws! I've updated the code in the latest commit based on your comments. I’d appreciate it if you could take a look when you have a chance.

@danielhumanmod
Copy link
Author

Hi @zhassan-aws , thanks for the review and suggestions. I have updated the code based on the comments, fix the unnecessary assume proof harness, using addr, and add unchecked_add to avoid overflow, appreciate if any further suggestion!

Copy link

@zhassan-aws zhassan-aws left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice. Thanks!

Copy link

@celinval celinval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please replace kani::requires and kani::ensures by safety::requires and safety::ensures. Thanks!

Copy link

@celinval celinval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Can you please add harnesses for the dangling pointers cases?

@feliperodri
Copy link

@danielhumanmod could you resolve the conflicts?

@danielhumanmod
Copy link
Author

@danielhumanmod could you resolve the conflicts?

Hi @feliperodri , I have solved the conflicts in latest commit, thanks for reminding that

@danielhumanmod
Copy link
Author

Thanks for the clarification @zhassan-aws ! I have updated the code based on the comments, appreciate any further or review that might need @zhassan-aws @celinval

Copy link

@zhassan-aws zhassan-aws left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@tautschnig tautschnig merged commit 892ee59 into model-checking:main Dec 3, 2024
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants