"an address found at storage position "+str(index)+".\n"+ \
"an address found at storage slot "+str(index)+". "+ \
"This storage position can be written to by calling the function '"+func+"'.\n" \
"This storage slot can be written to by calling the function '"+func+"'. "
"Verify that the contract address cannot be set by untrusted users.\n"
user_supplied=True
is_valid=True
break
break
ifis_valid:
ifuser_supplied:
description+="The available gas is forwarded to the called contract. Make sure that the logic of the calling contract is not adversely affected if the called contract misbehaves (e.g. reentrancy)."
description+="Generally, it is not recommended to call user-supplied adresses using Solidity's call() construct. Note that attackers might leverage reentrancy attacks to exploit race conditions or manipulate this contract's state."
issue=Issue(call.node.contract_name,call.node.function_name,address,"Message call to external contract","Warning",description)
issue=Issue(call.node.contract_name,call.node.function_name,address,"Message call to external contract","Warning",description)
issues.append(issue)
else:
description+="to a fixed address. Make sure that the called contract is trusted and does not execute user-supplied code."
issue=Issue(call.node.contract_name,call.node.function_name,address,"Message call to external contract","Informational",description)