Don't read past the end of the HTTP stream #3300
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.
Fixes #3297 (based on crash reports + code review + issue report alignment)
There is a bug in this stream implementation that allows it to attempt to read past the end of the stream if requested. That aligns with the issue reports, which appear to be crashes in the attempt to update the source information, which uses this code. It also aligns with the crash reports, which show an access violation on a page boundary when reading from the stream.
Change
Ensures that the trim start location is at least not past the end of the given buffer. Ensures that the
array_view
will not reference bytes past the end of the given buffer.Validation
Added a new test to ensure that we get the number of bytes expected based on the stream size (the 0 byte file issue persists, so I put a retry loop on the test).
Microsoft Reviewers: Open in CodeFlow