fix: panic index out of range for invalid series keys [Port to 1.11] #24595
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.
This is a cherry-pick of 6af0be9 (introduced in #24565) for a port to 1.11.
Original pull request comment:
Panics can be avoided by checking the validity of the return from
ReadSeriesKeyLen
, at the moment the size check resulting from this function is entirely discarded. The contained call tobinary.Uvarint
contains an implicit error, depending on the returned value:In every occurrence of
ReadSeriesKeyMeasurement
, theReadSeriesKeyLen
function is called prior to it, determined by glancing over the output ofrg "ReadSeriesKeyMeasurement" -B 5
across the full codebase.This PR refactors the flow slightly to include
ReadSeriesKeyLen
returned value checks and the appropriate action to avoid panicking when trying to access memory out of bounds, it has a knock-on effect such that theParseSeriesKey
function can returnnil
at another point which indicates an invalid result and the appropriate action should be taken.Closes #24593