Revert on failing read from calldata.

This commit is contained in:
chriseth 2020-10-08 19:43:16 +02:00
parent f8d5c4db36
commit 8b96d17cb5
2 changed files with 3 additions and 3 deletions

View File

@ -2552,7 +2552,7 @@ string YulUtilFunctions::cleanupFunction(Type const& _type)
case Type::Category::Enum: case Type::Category::Enum:
{ {
// Out of range enums cannot be truncated unambigiously and therefore it should be an error. // Out of range enums cannot be truncated unambigiously and therefore it should be an error.
templ("body", "cleaned := value " + validatorFunction(_type) + "(value)"); templ("body", "cleaned := value " + validatorFunction(_type, false) + "(value)");
break; break;
} }
case Type::Category::InaccessibleDynamic: case Type::Category::InaccessibleDynamic:
@ -3057,7 +3057,7 @@ string YulUtilFunctions::readFromMemoryOrCalldata(Type const& _type, bool _fromC
)") )")
("functionName", functionName) ("functionName", functionName)
("fromCalldata", _fromCalldata) ("fromCalldata", _fromCalldata)
("validate", validatorFunction(_type)) ("validate", validatorFunction(_type, true))
// Byte array elements generally need cleanup. // Byte array elements generally need cleanup.
// Other types are cleaned as well to account for dirty memory e.g. due to inline assembly. // Other types are cleaned as well to account for dirty memory e.g. due to inline assembly.
("cleanup", cleanupFunction(_type)) ("cleanup", cleanupFunction(_type))

View File

@ -347,7 +347,7 @@ public:
/// otherwise an assertion failure. /// otherwise an assertion failure.
/// ///
/// This is used for data decoded from external sources. /// This is used for data decoded from external sources.
std::string validatorFunction(Type const& _type, bool _revertOnFailure = false); std::string validatorFunction(Type const& _type, bool _revertOnFailure);
std::string packedHashFunction(std::vector<Type const*> const& _givenTypes, std::vector<Type const*> const& _targetTypes); std::string packedHashFunction(std::vector<Type const*> const& _givenTypes, std::vector<Type const*> const& _targetTypes);