fix(bls): fix is_infinity when aggregating onto empty AggregateSignature #8496
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.
Issue
this bug happens because we are computing the flag
is_infinitybefore branching, but the correctis_infinityvalue depends on the branch.let's say that
selfis empty and we add an infinity signature (sootheris AggSig::infinity()):self.is_infinitystarts asfalseother.is_infinityistruefalse && true = falseincorrectly because we will then branch toelsewhere we effectively add infinity + infinity; hence the flag should betrue && true = trueto fix this:
self.is_infinityflag is only set totrueif both are points at infinityself.is_infinity = other.is_infinity; if we branch to else, essentially we're adding infinity to whateverotheris, so ifotheris infinity,self.is_infinity = trueelseself.is_infinity = falseTest Results
before the fix:
after:
fixes #8491