SWC智能合约漏洞库

SWC-104/未检查的调用返回值

未检查消息调用的返回值。即使被调用的合约引发异常,执行也将继续。如果调用意外失败, 或者攻击者强制调用失败,则可能导致后续程序逻辑中的意外行为。

CWE漏洞分类

CWE-252:未经检查的返回值

整改方案

如果选择使用底层调用方法,请确保通过检查返回值来处理调用失败的可能性。

参考文献

合约示例

unchecked_return_value.sol

pragma solidity 0.4.25;

contract ReturnValue {

  function callchecked(address callee) public {
    require(callee.call());
  }

  function callnotchecked(address callee) public {
    callee.call();
  }
}

unchecked_return_value.yaml

description: Unchecked Return Value
issues:
- id: SWC-104
  count: 1
  locations:
  - bytecode_offsets:
      '0x7ef422fc103074d1506988ef06e35af83fb2314146d00653790de08f7d6d9c8d': [312]
    line_numbers:
      unchecked_return_value.sol: [10]