Alcx rewards are not claimed before burning the merged token, which leads to a permanent freezing of unclaimed Alcx rewards.
Vulnerability Details
When two tokens are merged, the from token is burnt but the unclaimed alcx rewards of the from token are not claimed before burning it. This causes the unclaimed alcx rewards of the from token to be permanently frozen when the token is burnt.
IFluxToken(FLUX).mergeFlux(_from, _to);
// If max lock is enabled end is the max lock time, otherwise it is the greater of the two end times
uint256 end = _locked1.maxLockEnabled
? ((block.timestamp + MAXTIME) / WEEK) * WEEK
: _locked0.end >= _locked1.end
? _locked0.end
: _locked1.end;
locked[_from] = LockedBalance(0, 0, false, 0);
_checkpoint(_from, _locked0, LockedBalance(0, 0, false, 0));
_burn(_from, value0);
_depositFor(_to, value0, end, _locked1.maxLockEnabled, _locked1, DepositType.MERGE_TYPE);
As seen above, the alcx rewards are not claimed before burning the merged token. This leads to a permanent freezing of unclaimed rewards.
Impact Details
Alcx rewards are permanently frozen when the from tokens are burnt during token merging.