mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Test case for invalid ecrecover call.
This commit is contained in:
parent
7e40def689
commit
368a8a62c1
@ -8251,6 +8251,53 @@ BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input)
|
|||||||
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0)));
|
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input_proper)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract C {
|
||||||
|
function f() returns (address) {
|
||||||
|
return recover(
|
||||||
|
0x77e5189111eb6557e8a637b27ef8fbb15bc61d61c2f00cc48878f3a296e5e0ca,
|
||||||
|
0, // invalid v value
|
||||||
|
0x6944c77849b18048f6abe0db8084b0d0d0689cdddb53d2671c36967b58691ad4,
|
||||||
|
0xef4f06ba4f78319baafd0424365777241af4dfd3da840471b4b4b087b7750d0d,
|
||||||
|
0xca35b7d915458ef540ade6068dfe2f44e8fa733c,
|
||||||
|
0xca35b7d915458ef540ade6068dfe2f44e8fa733c
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s, uint blockExpired, bytes32 salt)
|
||||||
|
returns (address)
|
||||||
|
{
|
||||||
|
require(hash == sha3(blockExpired, salt));
|
||||||
|
return ecrecover(hash, v, r, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
compileAndRun(sourceCode, 0, "C");
|
||||||
|
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(failing_ecrecover_invalid_input_asm)
|
||||||
|
{
|
||||||
|
char const* sourceCode = R"(
|
||||||
|
contract C {
|
||||||
|
function f() returns (address) {
|
||||||
|
assembly {
|
||||||
|
mstore(mload(0x40), 0xca35b7d915458ef540ade6068dfe2f44e8fa733c)
|
||||||
|
}
|
||||||
|
return ecrecover(
|
||||||
|
0x77e5189111eb6557e8a637b27ef8fbb15bc61d61c2f00cc48878f3a296e5e0ca,
|
||||||
|
0, // invalid v value
|
||||||
|
0x6944c77849b18048f6abe0db8084b0d0d0689cdddb53d2671c36967b58691ad4,
|
||||||
|
0xef4f06ba4f78319baafd0424365777241af4dfd3da840471b4b4b087b7750d0d
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
compileAndRun(sourceCode, 0, "C");
|
||||||
|
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0)));
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(calling_nonexisting_contract_throws)
|
BOOST_AUTO_TEST_CASE(calling_nonexisting_contract_throws)
|
||||||
{
|
{
|
||||||
char const* sourceCode = R"(
|
char const* sourceCode = R"(
|
||||||
|
Loading…
Reference in New Issue
Block a user