Merge pull request #10582 from ethereum/addr-literal

Fix crash with oversized address literals
This commit is contained in:
chriseth 2020-12-14 12:14:28 +01:00 committed by GitHub
commit 28374447d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -940,7 +940,7 @@ BoolResult RationalNumberType::isExplicitlyConvertibleTo(Type const& _convertTo)
if (category == Category::FixedBytes)
return false;
else if (category == Category::Address)
return !(isNegative() || isFractional() || integerType()->numBits() > 160);
return !(isNegative() || isFractional() || !integerType() || integerType()->numBits() > 160);
else if (category == Category::Integer)
return false;
else if (auto enumType = dynamic_cast<EnumType const*>(&_convertTo))

View File

@ -0,0 +1,7 @@
contract C {
function f() public pure {
address(0x11223345567aaaaaaaaaaaaaaaaaaaaaaaaaaaaa0112233445566778899001122);
}
}
// ----
// TypeError 9640: (52-128): Explicit type conversion not allowed from "int_const 1239...(70 digits omitted)...8130" to "address".