The changeFeeCollector does not revert if type is incorrect
The function changeFeeCollector allows to set the ID of withdrawFeeCollector, and futuresFeeCollector depends on passed feeCollectorType. But even if the feeCollectorType is not WithdrawFeeCollector or FuturesFeeCollector, the function will still be executed successfully. We recommend adding the else state to this function to return in case feeCollectorType is invalid.
function changeFeeCollector(FeeCollectorType feeCollectorType, bytes32 _newCollector) public override onlyOwner {
if (feeCollectorType == FeeCollectorType.WithdrawFeeCollector) {
emit ChangeFeeCollector(feeCollectorType, withdrawFeeCollector, _newCollector);
withdrawFeeCollector = _newCollector;
} else if (feeCollectorType == FeeCollectorType.FuturesFeeCollector) {
emit ChangeFeeCollector(feeCollectorType, futuresFeeCollector, _newCollector);
futuresFeeCollector = _newCollector;
}
}Remediation
This issue has been acknowledged by Orderly Network, and a fix was implemented in commit 6becad39↗.