Skip to content

interpret, miri: fix dealing with overflow during slice indexing and allocation #130342

New issue

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

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

Already on GitHub? # to your account

Merged
merged 2 commits into from
Sep 15, 2024

Conversation

RalfJung
Copy link
Member

@RalfJung RalfJung commented Sep 14, 2024

This is mostly to fix #130284.

I then realized we're using somewhat sketchy arguments for a similar multiplication in copy/copy_nonoverlapping/write_bytes, so I made them all share the same function that checks exactly the right thing. (The intrinsics would previously fail on allocations larger than 1 << 47 bytes... which are theoretically possible maybe? Anyway it seems conceptually wrong to use any other bound than isize::MAX here.)

@rustbot
Copy link
Collaborator

rustbot commented Sep 14, 2024

r? @fee1-dead

rustbot has assigned @fee1-dead.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 14, 2024
@rustbot
Copy link
Collaborator

rustbot commented Sep 14, 2024

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

@rustbot
Copy link
Collaborator

rustbot commented Sep 14, 2024

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung RalfJung force-pushed the slice-idx-overflow branch 2 times, most recently from 86d5c6c to 6aa14a8 Compare September 14, 2024 08:42
@RalfJung RalfJung changed the title interpret: fix dealing with overflow during slice indexing interpret, miri: fix dealing with overflow during slice indexing and allocation Sep 14, 2024
@saethlin
Copy link
Member

r? saethlin
@bors r+

@bors
Copy link
Collaborator

bors commented Sep 15, 2024

📌 Commit 268f6cf has been approved by saethlin

It is now in the queue for this repository.

@rustbot rustbot assigned saethlin and unassigned fee1-dead Sep 15, 2024
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 15, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 15, 2024
…iaskrgr

Rollup of 5 pull requests

Successful merges:

 - rust-lang#129439 (Implement feature `string_from_utf8_lossy_owned` for lossy conversion from `Vec<u8>` to `String` methods)
 - rust-lang#129828 (miri: treat non-memory local variables properly for data race detection)
 - rust-lang#130110 (make dist vendoring configurable)
 - rust-lang#130293 (Fix lint levels not getting overridden by attrs on `Stmt` nodes)
 - rust-lang#130342 (interpret, miri: fix dealing with overflow during slice indexing and allocation)

Failed merges:

 - rust-lang#130394 (const: don't ICE when encountering a mutable ref to immutable memory)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 96195a5 into rust-lang:master Sep 15, 2024
6 checks passed
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Sep 15, 2024
Rollup merge of rust-lang#130342 - RalfJung:slice-idx-overflow, r=saethlin

interpret, miri: fix dealing with overflow during slice indexing and allocation

This is mostly to fix rust-lang#130284.

I then realized we're using somewhat sketchy arguments for a similar multiplication in `copy`/`copy_nonoverlapping`/`write_bytes`,  so I made them all share the same function that checks exactly the right thing. (The intrinsics would previously fail on allocations larger than `1 << 47` bytes... which are theoretically possible maybe? Anyway it seems conceptually wrong to use any other bound than `isize::MAX` here.)
@rustbot rustbot added this to the 1.83.0 milestone Sep 15, 2024
@RalfJung RalfJung deleted the slice-idx-overflow branch September 21, 2024 07:12
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ICE: CTFE/miri crashes with overflow in built-in array index
5 participants