Use calldatacopy for selector retrieval to avoid access out of bounds for calldata.

This commit is contained in:
chriseth
2019-10-31 18:18:36 +01:00
parent 3d1123cf61
commit cee41839f5
4 changed files with 198 additions and 17 deletions
@@ -21,7 +21,9 @@ object \"C_6\" {
mstore(64, 128)
if iszero(lt(calldatasize(), 4))
{
let selector := shift_right_224_unsigned(calldataload(0))
mstore(0, 0)
calldatacopy(28, 0, 4)
let selector := mload(0)
switch selector
case 0x26121ff0 {
if callvalue() { revert(0, 0) }