SortedNodeStore::publishGroup: out of bounds read #677
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 the issued identified by @freeExec in #661
This code is a bit gross. It intentionally loops 1 past the size of the vector to ensure that we "publish" all the chunks.
There's a similar loop at lines 511-602.
In both loops, there's sort of three chunks of code, which I'll call "pre", "body" and "post". The pre/post sections need to be guarded, and the guard for the first loop's "post" section was missing.
Looking at it with fresh eyes, I think we could extract the "body" parts of both loops to their own functions, change the loop to use
<
instead of<=
and then just call the body function again after the loop ends if it's needed. For now, I'm inclined to let a sleeping dog lie, but if more work happens in here, that'd be a good cleanup step.This was also visible in valgrind, as it turns out--the error goes away with this change:
SortedWayStore has a similar publishGroup function, but its internal implementation is different and it doesn't have this issue.