mirror of https://github.com/crytic/slither
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
4 years ago
|
contract ERC20 {
|
||
|
function balanceOf(address) public view returns (uint) {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
contract C {
|
||
|
function tryCatchFunctionCall() public {
|
||
|
uint actualBalance;
|
||
|
|
||
|
try ERC20(msg.sender).balanceOf(address(this)) returns (uint balance) {
|
||
|
actualBalance = balance;
|
||
|
} catch Error(string memory err) {
|
||
|
revert(err);
|
||
|
}
|
||
|
|
||
|
try ERC20(msg.sender).balanceOf(address(this)) returns (uint balance) {
|
||
|
actualBalance = balance;
|
||
|
} catch (bytes memory err) {
|
||
|
revert(string(err));
|
||
|
}
|
||
|
|
||
|
try ERC20(msg.sender).balanceOf(address(this)) returns (uint balance) {
|
||
|
actualBalance = balance;
|
||
|
} catch Error(string memory err) {
|
||
|
revert(err);
|
||
|
} catch (bytes memory err) {
|
||
|
revert(string(err));
|
||
|
}
|
||
|
|
||
|
try ERC20(msg.sender).balanceOf(address(this)) returns (uint) {
|
||
|
} catch {
|
||
|
actualBalance = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function tryCatchContractDeployment() public {
|
||
|
try new ERC20() returns (ERC20 deployed) {
|
||
|
try deployed.balanceOf(address(this)) returns (uint) {
|
||
|
|
||
|
} catch {
|
||
|
|
||
|
}
|
||
|
} catch {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|