MDEV-35665 Potential Buffer Overrun in Gtid_log_event::write() #3717
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.
Description
Two-Phase ALTER added a
sa_seq_no
field, butGtid_log_event::write()
’s size calculation doesn’t have an addend in its name.This means
sa_seq_no
can overrunGtid_log_event::write()
’s buffer.This patch resizes the buffer to match
write()
's code.Gtid_log_event
is variable-sized, but it’s possible that an instance flags all its fields for writing.Release Notes
Fixed internal buffer overrun when writing a GTID event with all flags active.
How can this PR be tested?
TODO: We need a test that writes a
Gtid_log_event
with every field flagged active, not only so Valgrind (or a manualDBUG_ASSERT
) can catch buffer overruns, but also to validate future new fields that they don’t impact any existing fields.Basing the PR against the correct MariaDB version
[ ] This is a new feature or a refactoring, and the PR is based against themain
branch.PR quality check