in callExternalContract
method there is no check if the receiving contract is actually a smart contract when data
parameter is not empty.
calling contract address that is not smart contract with non empty calldata will return success.
Unexpected behavior by the caller.
manual review
add check on line https://github.com/Cyfrin/2024-11-one-world/blob/1e872c7ab393c380010a507398d4b4caca1ae32b/contracts/dao/MembershipFactory.sol#L177
`if (data.length > 0) {
require(contractAddress.code.length > 0, "contract is not smart contract");
}
`
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.