LikeRegistry::matchRewards keeps the state variable LikeRegistry::totalFees at 0Function LikeRegistry::matchRewards updates var LikeRegistry::totalFees, but it does so with faulty data by pulling from the mapping LikeRegistry::userBalances, whose entries never change from the default 0.
In contract LikeRegistry:
Likelihood:
This is guaranteed to happen any time matchRewards is called.
Impact:
The impact is that this portion of matchRewards effectively does nothing, because it is grabbing 0 from the mapping userBalances to define matchUserOne and matchUserTwo, resetting entries in userBalances to 0, defining totalRewards as 0 + 0, which equals 0, defining matchingFees as (0 * FIXEDFEE) / 100, which equals 0, defining rewards as 0 - 0, which equals 0, and then incrementing totalFees by 0, then transfering a value of 0 to the newly created contract multiSigWallet.
Using our added getter function LikeRegistry::getTotalFees, and our modifier that mints profiles for user1 and user2, we see in this function that state variable likeRegistry:totalFees stays at 0 before and after two users mutually like each other, which should call likeRegistry::matchRewards, which should be updating totalFees.
We recommend that LikeRegistry::likeUser is updated to added non-zero values to the entries in the mapping LikeRegistry::userBalances so that matchRewards accesses non-zero values to indeed match the rewards. See our finding M-1 for more information.
We recommend that the function LikeRegistry::likeUser updates msg.sender's entry in userBalances by adding msg.value to it.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.