Skip to content

Commit

Permalink
fix: add empty address check and clear state before extracall
Browse files Browse the repository at this point in the history
  • Loading branch information
unclezoro committed Feb 24, 2024
1 parent ff4a2b1 commit 2044b88
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions contracts/BSCValidatorSet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -290,9 +290,10 @@ contract BSCValidatorSet is IBSCValidatorSet, System, IParamSubscriber, IApplica

// step 1: distribute incoming
for (uint i; i < currentValidatorSet.length; ++i) {
if (currentValidatorSet[i].incoming != 0) {
IStakeHub(STAKE_HUB_ADDR).distributeReward{value : currentValidatorSet[i].incoming}(currentValidatorSet[i].consensusAddress);
uint256 incoming = currentValidatorSet[i].incoming;
if (incoming != 0) {
currentValidatorSet[i].incoming = 0;
IStakeHub(STAKE_HUB_ADDR).distributeReward{value : incoming}(currentValidatorSet[i].consensusAddress);
}
}

Expand Down Expand Up @@ -1162,7 +1163,7 @@ contract BSCValidatorSet is IBSCValidatorSet, System, IParamSubscriber, IApplica

// count the number of felony validators
for (uint k; k<_validatorSet.length; ++k) {
if (_validatorSet[k].jailed) {
if (_validatorSet[k].jailed || _validatorSet[k].consensusAddress == address(0)) {
++numOfFelony;
}
}
Expand All @@ -1180,7 +1181,7 @@ contract BSCValidatorSet is IBSCValidatorSet, System, IParamSubscriber, IApplica
unjailedVoteAddrs = new bytes[](_validatorSet.length - numOfFelony);
i = 0;
for (uint index; index<_validatorSet.length; ++index) {
if (!_validatorSet[index].jailed) {
if (!_validatorSet[index].jailed && _validatorSet[index].consensusAddress != address(0)) {
unjailedValidatorSet[i] = _validatorSet[index];
unjailedVoteAddrs[i] = _voteAddrs[index];
++i;
Expand Down

0 comments on commit 2044b88

Please sign in to comment.