-
Notifications
You must be signed in to change notification settings - Fork 0
Woof software/rewards v2 multiple rewards audit fixes #147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Woof software/rewards v2 multiple rewards audit 8000 fixes #147
Conversation
if(msg.sender != governor) revert NotPermitted(msg.sender); | ||
if(startRoot == bytes32(0)) revert BadData(); | ||
if(assets.length == 0) revert BadData(); | ||
if(duration > MAX_CAMPAIGN_DURATION) revert BadData(); | ||
|
||
uint64 accrualScale = CometInterface(comet).baseAccrualScale(); | ||
Campaign storage $ = campaigns[comet].push(); | ||
campaignId = campaigns[comet].length - 1; | ||
uint256 campaignId = campaigns[comet].length - 1; |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.security.basic-arithmetic-underflow Note
for(uint256 j = 0; j < claimedAmounts[i].length; j++){ | ||
emit RewardsClaimedSet(campaignId, users[i], comet, tokens[i][j], claimedAmounts[i][j]); | ||
$.claimed[users[i]][tokens[i][j]] = claimedAmounts[i][j]; | ||
if(assets.length != claimedAmounts[i].length) revert BadData(); |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.array-length-outside-loop Note
for(uint256 j = 0; j < claimedAmounts[i].length; j++){ | ||
emit RewardsClaimedSet(campaignId, users[i], comet, tokens[i][j], claimedAmounts[i][j]); | ||
$.claimed[users[i]][tokens[i][j]] = claimedAmounts[i][j]; | ||
if(assets.length != claimedAmounts[i].length) revert BadData(); |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.array-length-outside-loop Note
$.claimed[users[i]][tokens[i][j]] = claimedAmounts[i][j]; | ||
if(assets.length != claimedAmounts[i].length) revert BadData(); | ||
|
||
for(uint256 j = 0; j < assets.length; j++){ |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.array-length-outside-loop Note
$.claimed[users[i]][tokens[i][j]] = claimedAmounts[i][j]; | ||
if(assets.length != claimedAmounts[i].length) revert BadData(); | ||
|
||
for(uint256 j = 0; j < assets.length; j++){ |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.unnecessary-checked-arithmetic-in-loop Note
Using Solidity's unchecked block saves the overflow checks.
$.claimed[users[i]][tokens[i][j]] = claimedAmounts[i][j]; | ||
if(assets.length != claimedAmounts[i].length) revert BadData(); | ||
|
||
for(uint256 j = 0; j < assets.length; j++){ |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
verifyNewMember(comet, src, campaignIDs[i], neighbors[i], multiProofs[i].proofs); | ||
if(!CometInterface(comet).hasPermission(src, msg.sender)) | ||
revert NotPermitted(msg.sender); | ||
for (uint256 i; i < campaignIds.length; i++) { |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.unnecessary-checked-arithmetic-in-loop Note
Using Solidity's unchecked block saves the overflow checks.
verifyNewMember(comet, src, campaignIDs[i], neighbors[i], multiProofs[i].proofs); | ||
if(!CometInterface(comet).hasPermission(src, msg.sender)) | ||
revert NotPermitted(msg.sender); | ||
for (uint256 i; i < campaignIds.length; i++) { |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
93b06a3
into
woof-software/rewards-v2-multiple-rewards
No description provided.