Skip to content
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

Feature - Check syscall outputs do not overlap #28599

Conversation

Lichtso
Copy link
Contributor

@Lichtso Lichtso commented Oct 26, 2022

Problem

Some syscalls have multiple outputs which are written back to buffers provided in the parameters. C users could accidentally provide overlapping buffers, which is kind of a foot gun.

Summary of Changes

  • Extends is_nonoverlapping() to be able to deal with two different lengths.
  • Uses is_nonoverlapping() for syscall output parameters.
  • Feature gates the new throws of SyscallError::CopyOverlapping.
  • Adds tests which trigger SyscallError::CopyOverlapping.

Feature Gate Issue: #28600

@Lichtso Lichtso force-pushed the feature/check_syscall_outputs_do_not_overlap branch from 51dca6b to f63b329 Compare October 26, 2022 14:19
@Lichtso Lichtso force-pushed the feature/check_syscall_outputs_do_not_overlap branch from f63b329 to 088fee1 Compare October 26, 2022 14:37
@Lichtso Lichtso force-pushed the feature/check_syscall_outputs_do_not_overlap branch from 088fee1 to 93a3f11 Compare October 26, 2022 15:12
@Lichtso Lichtso merged commit a43098a into solana-labs:master Oct 27, 2022
@Lichtso Lichtso deleted the feature/check_syscall_outputs_do_not_overlap branch October 27, 2022 17:11
Lichtso added a commit that referenced this pull request Oct 27, 2022
* Extends is_nonoverlapping() to be able to deal with two different lengths.

* Uses is_nonoverlapping() for syscall output parameters.

* Feature gates the new throws of SyscallError::CopyOverlapping.
Lichtso added a commit that referenced this pull request Oct 27, 2022
* Extends is_nonoverlapping() to be able to deal with two different lengths.

* Uses is_nonoverlapping() for syscall output parameters.

* Feature gates the new throws of SyscallError::CopyOverlapping.
gnapoli23 pushed a commit to gnapoli23/solana that referenced this pull request Dec 16, 2022
* Extends is_nonoverlapping() to be able to deal with two different lengths.

* Uses is_nonoverlapping() for syscall output parameters.

* Feature gates the new throws of SyscallError::CopyOverlapping.

* Adds tests which trigger SyscallError::CopyOverlapping.
nickfrosty pushed a commit to nickfrosty/solana that referenced this pull request Jan 4, 2023
* Extends is_nonoverlapping() to be able to deal with two different lengths.

* Uses is_nonoverlapping() for syscall output parameters.

* Feature gates the new throws of SyscallError::CopyOverlapping.

* Adds tests which trigger SyscallError::CopyOverlapping.
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.

2 participants