diff options
author | Brad King <brad.king@kitware.com> | 2011-03-14 21:47:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-03-14 21:49:30 (GMT) |
commit | 339d5922d9baef98c3a19fd0712badeb3d9e2996 (patch) | |
tree | b54531857b088ab2696aed4d61a1c122ba64232c /Source/cmMakefile.cxx | |
parent | d5d661d2b259447edfc89d130878f3a9b2203ea1 (diff) | |
download | CMake-339d5922d9baef98c3a19fd0712badeb3d9e2996.zip CMake-339d5922d9baef98c3a19fd0712badeb3d9e2996.tar.gz CMake-339d5922d9baef98c3a19fd0712badeb3d9e2996.tar.bz2 |
Validate custom command arguments (#11963)
Reject quoted commands immediately with an error message instead of
allowing a later assertion failure.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index e14e44d..c36dd05 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -893,6 +893,20 @@ cmMakefile::AddCustomCommandToOutput(const std::vector<std::string>& outputs, return; } + // Validate custom commands. TODO: More strict? + for(cmCustomCommandLines::const_iterator i=commandLines.begin(); + i != commandLines.end(); ++i) + { + cmCustomCommandLine const& cl = *i; + if(!cl.empty() && !cl[0].empty() && cl[0][0] == '"') + { + cmOStringStream e; + e << "COMMAND may not contain literal quotes:\n " << cl[0] << "\n"; + this->IssueMessage(cmake::FATAL_ERROR, e.str()); + return; + } + } + // Choose a source file on which to store the custom command. cmSourceFile* file = 0; if(main_dependency && main_dependency[0]) |