Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Failing Assertion
Abstract
Uma função usa a função
assert
do Solidity para verificar uma declaração falsa.Explanation
A função
Exemplo 1: O código a seguir usa a função
assert
do Solidity destina-se a verificar apenas instruções avaliadas como true
. Ter uma instrução false
passada para essa função indica que o código não está funcionando corretamente ou que a função está sendo mal utilizada, por exemplo, para validar a entrada.Exemplo 1: O código a seguir usa a função
assert
para verificar uma instrução falsa.
contract A {
B b = new B(7);
function checkWithAssert(){
assert(b.retValue() == 21);
...
}
}
contract B {
uint _par;
constructor(uint par){
_par = par;
}
function retValue() returns(uint){
return _par;
}
}
References
[1] Enterprise Ethereum Alliance No failing assert statements
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 1
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 5
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 3
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 670
[7] Standards Mapping - Smart Contract Weakness Classification SWC-110
desc.structural.solidity.swc110