The function SDLPoolCCIPControllerPrimary::distributeRewards does not support sending rewards tokens more than the limit allowed by CCIP.
The function SDLPoolCCIPControllerPrimary::distributeRewards helps to be able to send the supported token rewards to different whitelisted chains, this with the help of CCIP.ccipSend. Afterwards the secondary chains can receive the rewards.
On the other hand, CCIP has a maximum allowed number of tokens sent per message, this can be seen in the following validation maxNumberOfTokensPerMsg, that means that if in the function SDLPoolCCIPControllerPrimary::distributeRewards distributes more tokens than allowed by CCIP the distribution of rewards will be reversed, making the distribution of rewards not possible.
The function SDLPoolCCIPControllerPrimary::distributeRewards obtains the supported tokens with help of the function ISDLPoolPrimary(sdlPool).supportedTokens()), however it does not have a procedure to send multiple messages and thus not exceed the limit of tokens per message of CCIP.
The distribution of rewards (SDLPoolCCIPControllerPrimary::distributeRewards) will not be executed if the number of tokens to be sent exceeds the limit allowed by CCIP. The rewards will not be distributed to the users so users will lost tokens rewards.
Manual review
Modify the SDLPoolCCIPControllerPrimary::distributeRewards function to be able to send multiple messages via CCIP to the secondary chains if supported tokens exceeds the limit allowed by CCIP. So the sending of rewards tokens will be in multiple batches in order to not exceed the CCIP limit.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.