Skip to content

Do not read past the end of the file being patched#92

Merged
shannonbooth merged 2 commits into
mainfrom
applier-boogs
Jul 25, 2026
Merged

Do not read past the end of the file being patched#92
shannonbooth merged 2 commits into
mainfrom
applier-boogs

Conversation

@shannonbooth

Copy link
Copy Markdown
Owner

two different bugs where we could throw an exception

A hunk with no surrounding context is placed wherever its range claims
it belongs, which may be beyond the end of the file, or before the start
of it once an offset from an earlier hunk is taken into account.
Applying such a patch read the input lines out of range, and the
resulting std::out_of_range escaped as the diagnostic "**** vector".

Clamp the guess into the file, so that a location is always somewhere
the applier can write.
Fuzz can match a hunk whose trailing context runs past the end of the
file, since that context is dropped rather than compared. Those lines
were still written out from the input, reading it out of range, and the
resulting std::out_of_range escaped as the diagnostic "**** vector".
Skip context and removals which have no line left to consume.
@shannonbooth
shannonbooth merged commit bf4b669 into main Jul 25, 2026
9 checks passed
@shannonbooth
shannonbooth deleted the applier-boogs branch July 25, 2026 20:08
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.

1 participant