From 5fd9ea4b2abf9d2498fa725cfdbdf152c3d3d15a Mon Sep 17 00:00:00 2001 From: Zhen Zhang Date: Tue, 27 Feb 2018 12:31:09 +0800 Subject: [PATCH] Stop allow_guessing for command line option parser --- Changelog.md | 1 + solc/CommandLineInterface.cpp | 1 + test/cmdlineTests.sh | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/Changelog.md b/Changelog.md index 3af3a99d9..8aa7ba0cc 100644 --- a/Changelog.md +++ b/Changelog.md @@ -14,6 +14,7 @@ Bugfixes: * Standalone Assembly: Do not ignore input after closing brace of top level block. * Standard JSON: catch errors properly when invalid "sources" are passed * Type Checker: Properly warn when using ``_offset`` and ``_slot`` for constants in inline assembly. + * Commandline interface: throw error if option is unknown ### 0.4.20 (2018-02-14) diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 8383afed9..62b249755 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -627,6 +627,7 @@ Allowed options)", try { po::command_line_parser cmdLineParser(_argc, _argv); + cmdLineParser.style(po::command_line_style::default_style & (~po::command_line_style::allow_guessing)); cmdLineParser.options(allOptions).positional(filesPositions); po::store(cmdLineParser.run(), m_args); } diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index a249b601e..f2c1f2c3a 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -83,6 +83,21 @@ function compileWithoutWarning() test -z "$output" -a "$failed" -eq 0 } +printTask "Testing unknown options..." +( + set +e + output=$("$SOLC" --allow=test 2>&1) + failed=$? + set -e + + if [ "$output" == "unrecognised option '--allow=test'" ] && [ $failed -ne 0 ] ; then + echo "Passed" + else + printError "Incorrect response to unknown options: $STDERR" + exit 1 + fi +) + printTask "Compiling various other contracts and libraries..." ( cd "$REPO_ROOT"/test/compilationTests/