enzymefinance / oyente

An Analysis Tool for Smart Contracts
GNU General Public License v3.0
1.32k stars 309 forks source link

Exception on binary contract #436

Open mrx23dot opened 2 years ago

mrx23dot commented 2 years ago

Running latest Oyente on contract: https://etherscan.io/address/0xae98b0e0c112b6d85ba32ff521b051f3fb2bafab#code extracted binary via etherscan API: 0xae98b0e0c112b6d85ba32ff521b051f3fb2bafab.txt

Many other contracts pass this way.

cmd docker start oyente_cont && docker exec -i oyente_cont python /oyente/oyente/oyente.py --compilation-error --depthlimit 4 --looplimit 100 -s 0xae98b0e0c112b6d85ba32ff521b051f3fb2bafab.txt -b

fails with:

WARNING:root:You are using evm version 1.8.2. The supported version is 1.7.3
WARNING:root:You are using solc version 0.4.21, The latest supported version is 0.4.19
incomplete push instruction at 13234
INFO:symExec:   ============ Results ===========
INFO:symExec:     EVM Code Coverage:                     0.9%
Traceback (most recent call last):
  File "/oyente/oyente/oyente.py", line 221, in <module>
    main()
  File "/oyente/oyente/oyente.py", line 210, in main
    exit_code = analyze_bytecode()
  File "/oyente/oyente/oyente.py", line 72, in analyze_bytecode
    result, exit_code = symExec.run(disasm_file=inp['disasm_file'])
  File "/oyente/oyente/symExec.py", line 2458, in run
    ret = detect_vulnerabilities()
  File "/oyente/oyente/symExec.py", line 2280, in detect_vulnerabilities
    detect_callstack_attack()
  File "/oyente/oyente/symExec.py", line 2201, in detect_callstack_attack
    pcs = check_callstack_attack(instr)
  File "/oyente/oyente/symExec.py", line 2170, in check_callstack_attack
    swap_num = int(disasm[i+1][2])
ValueError: invalid literal for int() with base 10: ''