ivicanikolicsg / MAIAN

MAIAN: automatic tool for finding trace vulnerabilities in Ethereum smart contracts
MIT License
556 stars 157 forks source link

Ability to pass --allow-paths to solc #29

Open elenadimitrova opened 5 years ago

elenadimitrova commented 5 years ago

When running against a contract which imports external libs we get Error: Source [...] not found: File outside of allowed directories.

Galaxy:colonyNetwork Elena$ python ../Source/MAIAN/tool/maian.py -s contracts/ColonyNetwork.sol ColonyNetwork -c 0

====================================================================================================
[ ] Compiling Solidity contract from the file contracts/ColonyNetwork.sol ... contracts/ColonyNetworkStorage.sol:20:1: Error: Source "lib/dappsys/math.sol" not found: File outside of allowed directories.
import "../lib/dappsys/math.sol";
^-------------------------------^
contracts/EtherRouter.sol:21:1: Error: Source "lib/dappsys/auth.sol" not found: File outside of allowed directories.
import "../lib/dappsys/auth.sol";
^-------------------------------^
contracts/CommonStorage.sol:20:1: Error: Source "lib/dappsys/auth.sol" not found: File outside of allowed directories.
import "../lib/dappsys/auth.sol";
^-------------------------------^
contracts/ERC20Extended.sol:20:1: Error: Source "lib/dappsys/erc20.sol" not found: File outside of allowed directories.
import "../lib/dappsys/erc20.sol";
^--------------------------------^
contracts/Resolver.sol:20:1: Error: Source "lib/dappsys/auth.sol" not found: File outside of allowed directories.
import "../lib/dappsys/auth.sol";
^-------------------------------^
contracts/DomainRoles.sol:20:1: Error: Source "lib/dappsys/roles.sol" not found: File outside of allowed directories.
import "../lib/dappsys/roles.sol";
^--------------------------------^

[-] Cannot compile the contract

We should be able to pass --allow-paths to solc to allow compilation of contracts which use external libraries.