Merge pull request #37 from 10a7/master

Add retcode error checking, solc_binary argument
pull/41/head
Bernhard Mueller 7 years ago committed by GitHub
commit e28c525af1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      mythril/ether/util.py

@ -2,7 +2,6 @@ from ethereum.abi import encode_abi, encode_int
from ethereum.utils import zpad from ethereum.utils import zpad
from ethereum.abi import method_id from ethereum.abi import method_id
from mythril.exceptions import CompilerError from mythril.exceptions import CompilerError
import subprocess
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
import binascii import binascii
import os import os
@ -17,10 +16,12 @@ def safe_decode(hex_encoded_string):
def compile_solidity(solc_binary, file): def compile_solidity(solc_binary, file):
try: try:
p = Popen(["solc", "--bin-runtime", file], stdout=PIPE, stderr=PIPE) p = Popen([solc_binary, "--bin-runtime", file], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate() stdout, stderr = p.communicate()
ret = p.returncode
if ret < 0:
raise CompilerError("The Solidity compiler experienced a fatal error (code %d). Please check the Solidity compiler." % ret)
except FileNotFoundError: except FileNotFoundError:
raise CompilerError("Compiler not found. Make sure that solc is installed and in PATH, or set the SOLC environment variable.") raise CompilerError("Compiler not found. Make sure that solc is installed and in PATH, or set the SOLC environment variable.")
@ -30,8 +31,6 @@ def compile_solidity(solc_binary, file):
err = "Error compiling input file. Solc returned:\n" + stderr.decode("UTF-8") err = "Error compiling input file. Solc returned:\n" + stderr.decode("UTF-8")
raise CompilerError(err) raise CompilerError(err)
# out = out.replace("[\n\s]", "")
m = re.search(r":(.*?) =======\nBinary of the runtime part: \n([0-9a-f]+)\n", out) m = re.search(r":(.*?) =======\nBinary of the runtime part: \n([0-9a-f]+)\n", out)
return [m.group(1), m.group(2)] return [m.group(1), m.group(2)]

Loading…
Cancel
Save