Merge pull request #10710 from ethereum/implicit-conversion-bug

Disallow certain implicit conversions between integer types.
This commit is contained in:
chriseth
2021-01-12 15:42:12 +01:00
committed by GitHub
6 changed files with 27 additions and 8 deletions
+5 -4
View File
@@ -510,12 +510,13 @@ BoolResult IntegerType::isImplicitlyConvertibleTo(Type const& _convertTo) const
if (_convertTo.category() == category())
{
IntegerType const& convertTo = dynamic_cast<IntegerType const&>(_convertTo);
if (convertTo.m_bits < m_bits)
// disallowing unsigned to signed conversion of different bits
if (isSigned() != convertTo.isSigned())
return false;
else if (convertTo.m_bits < m_bits)
return false;
else if (isSigned())
return convertTo.isSigned();
else
return !convertTo.isSigned() || convertTo.m_bits > m_bits;
return true;
}
else if (_convertTo.category() == Category::FixedPoint)
{