aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2017-10-04 01:48:53 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2018-04-06 17:03:52 +0800
commitf39f36f2c7f38ecc8c171447de4c65c8cb968640 (patch)
treea5c00ddf4943796cb0be0b0e8849dd6b98fd2c68
parent309a90bb5da06a5f54cd976b7da647e3bfece2e3 (diff)
downloaddexon-solidity-f39f36f2c7f38ecc8c171447de4c65c8cb968640.tar.gz
dexon-solidity-f39f36f2c7f38ecc8c171447de4c65c8cb968640.tar.zst
dexon-solidity-f39f36f2c7f38ecc8c171447de4c65c8cb968640.zip
Fix file missing error message on imports.
Trying to convert an import path into a Boost canonical path causes boost to throw an exception if the given file does not exist. Thus, instead of geting to the 'File not found' error, we instead got into the cath-all handler for 'Unknown exception in read callback'. This change rearranges the file checks to happen before we create a canonical Boost path. It also drive-by removes the unnecessary 'else' block, as the body of the if is a guard-like return block.
-rw-r--r--solc/CommandLineInterface.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp
index 8f81e799..93203de6 100644
--- a/solc/CommandLineInterface.cpp
+++ b/solc/CommandLineInterface.cpp
@@ -700,7 +700,13 @@ bool CommandLineInterface::processInput()
try
{
auto path = boost::filesystem::path(_path);
+ if (!boost::filesystem::exists(path))
+ return ReadCallback::Result{false, "File not found."};
+
auto canonicalPath = boost::filesystem::canonical(path);
+ if (!boost::filesystem::is_regular_file(canonicalPath))
+ return ReadCallback::Result{false, "Not a valid file."};
+
bool isAllowed = false;
for (auto const& allowedDir: m_allowedDirectories)
{
@@ -716,16 +722,10 @@ bool CommandLineInterface::processInput()
}
if (!isAllowed)
return ReadCallback::Result{false, "File outside of allowed directories."};
- else if (!boost::filesystem::exists(path))
- return ReadCallback::Result{false, "File not found."};
- else if (!boost::filesystem::is_regular_file(canonicalPath))
- return ReadCallback::Result{false, "Not a valid file."};
- else
- {
- auto contents = dev::readFileAsString(canonicalPath.string());
- m_sourceCodes[path.string()] = contents;
- return ReadCallback::Result{true, contents};
- }
+
+ auto contents = dev::readFileAsString(canonicalPath.string());
+ m_sourceCodes[path.string()] = contents;
+ return ReadCallback::Result{true, contents};
}
catch (Exception const& _exception)
{