EVMHost: Reduce code duplication in precompiles

This commit is contained in:
Alex Beregszaszi 2022-09-26 15:02:05 +02:00
parent a260000a16
commit c967a621eb

View File

@ -394,8 +394,14 @@ evmc::result EVMHost::precompileECRecover(evmc_message const& _message) noexcept
} }
}; };
evmc::result result = precompileGeneric(_message, inputOutput); evmc::result result = precompileGeneric(_message, inputOutput);
// ECRecover will return success with empty response in case of failure
if (result.status_code != EVMC_SUCCESS)
{
result.status_code = EVMC_SUCCESS; result.status_code = EVMC_SUCCESS;
result.gas_left = _message.gas; result.gas_left = _message.gas;
result.output_data = {};
result.output_size = 0;
}
return result; return result;
} }
@ -408,12 +414,7 @@ evmc::result EVMHost::precompileSha256(evmc_message const& _message) noexcept
_message.input_data + _message.input_size _message.input_data + _message.input_size
)); ));
evmc::result result({}); return resultWithGas(_message, hash);
result.status_code = EVMC_SUCCESS;
result.gas_left = _message.gas;
result.output_data = hash.data();
result.output_size = hash.size();
return result;
} }
evmc::result EVMHost::precompileRipeMD160(evmc_message const& _message) noexcept evmc::result EVMHost::precompileRipeMD160(evmc_message const& _message) noexcept
@ -488,12 +489,7 @@ evmc::result EVMHost::precompileIdentity(evmc_message const& _message) noexcept
bytes static data; bytes static data;
data = bytes(_message.input_data, _message.input_data + _message.input_size); data = bytes(_message.input_data, _message.input_data + _message.input_size);
evmc::result result({}); return resultWithGas(_message, data);
result.status_code = EVMC_SUCCESS;
result.gas_left = _message.gas;
result.output_data = data.data();
result.output_size = data.size();
return result;
} }
evmc::result EVMHost::precompileModExp(evmc_message const&) noexcept evmc::result EVMHost::precompileModExp(evmc_message const&) noexcept