The check rewardSelector != ZERO BYTES4 && rewardDestination.isContract() could be improved
Description:
When the destination reward is a contract and the selector is not 0, the function is called on the contract. However, there seems to be no logical scenario to have a reward selector different than 0 and the reward destinaton not being a contract. In case this happens by mistake, rewards could be sent to the destination contract without calling the function, which could be problematic.
Recommended Mitigation:
It would be better to either revert in this case or perform the contract check when setting the reward selector.
0xSimao:
Fixed in #0d6233e.