aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2018-01-05 07:25:41 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2018-02-22 08:02:19 +0800
commitae02bb5aadfa49636f9931524dbc026c855201f1 (patch)
tree0328334a01d5198a6f17c97c8ad6fa0c46a52906 /libsolidity/inlineasm
parentd01786f0aa4e128f70aea2bc53a8d3c61294a587 (diff)
downloaddexon-solidity-ae02bb5aadfa49636f9931524dbc026c855201f1.tar.gz
dexon-solidity-ae02bb5aadfa49636f9931524dbc026c855201f1.tar.zst
dexon-solidity-ae02bb5aadfa49636f9931524dbc026c855201f1.zip
Raise error on oversized number literals in assembly
Diffstat (limited to 'libsolidity/inlineasm')
-rw-r--r--libsolidity/inlineasm/AsmAnalysis.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp
index 2d6e58de..e672d5ef 100644
--- a/libsolidity/inlineasm/AsmAnalysis.cpp
+++ b/libsolidity/inlineasm/AsmAnalysis.cpp
@@ -82,6 +82,14 @@ bool AsmAnalyzer::operator()(assembly::Literal const& _literal)
);
return false;
}
+ else if (_literal.kind == assembly::LiteralKind::Number && bigint(_literal.value) > u256(-1))
+ {
+ m_errorReporter.typeError(
+ _literal.location,
+ "Number literal too large (> 256 bits)"
+ );
+ return false;
+ }
m_info.stackHeightInfo[&_literal] = m_stackHeight;
return true;
}