DeFiFoundry
60,000 USDC
View results
Submission Details
Severity: medium
Invalid

initializables and initializePayloads can have different length in "initializeRootUpgrade"

Summary

There is no check for array length check in initializables and initializePayloads.

Vulnerability Details

https://github.com/Cyfrin/2024-07-zaros/blob/main/src/tree-proxy/leaves/RootUpgrade.sol#L213

function initializeRootUpgrade(
RootProxy.BranchUpgrade[] memory,
address[] memory initializables,
bytes[] memory initializePayloads
)
internal
{
@> for (uint256 i; i < initializables.length; i++) {
address initializable = initializables[i];
bytes memory data = initializePayloads[i];
if (initializable.code.length == 0) {
revert Errors.InitializableIsNotContract(initializable);
}
Address.functionDelegateCall(initializable, data);
}
}
}

Impact

functionDelegateCall calls will be wrong.

Tools Used

Recommendations

require(initializables.length()==initializePayloads.length());

Updates

Lead Judging Commences

inallhonesty Lead Judge
about 1 year ago
inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.