31540 - [SC - Insight] Expired Token Locks Impacting Vote Weight Calcu...
Description
Description
Impact
Vulnerable Code
function _balanceOfTokenAt(uint256 _tokenId, uint256 _time) internal view returns (uint256) {
uint256 _epoch = userPointEpoch[_tokenId];
if (_epoch == 0 || _time < pointHistory[userFirstEpoch[_tokenId]].ts) {
return 0;
} else {
uint256 _min = 0;
uint256 _max = userPointEpoch[_tokenId];
for (uint256 i = 0; i < 128; ++i) {
if (_min >= _max) {
break;
}
uint256 _mid = (_min + _max + 1) / 2;
if (userPointHistory[_tokenId][_mid].ts <= _time) {
_min = _mid;
} else {
_max = _mid - 1;
}
}
Point memory lastPoint = userPointHistory[_tokenId][_min];
int256 biasCalculation = locked[_tokenId].maxLockEnabled
? int256(0)
: lastPoint.slope * (int256(_time) - int256(lastPoint.ts));
lastPoint.bias -= biasCalculation;
if (lastPoint.bias < 0) {
lastPoint.bias = 0;
}
return uint256(lastPoint.bias);
}
}Mitigation
Proof of Concept
Expected Output
Previous31539 - [SC - Medium] The Voterdistribute function can continue to failNext31541 - [SC - Critical] FluxTokens unlimited mint and Exploitation of g...
Last updated
Was this helpful?