summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefile.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-03-14 21:47:31 (GMT)
committerBrad King <brad.king@kitware.com>2011-03-14 21:49:30 (GMT)
commit339d5922d9baef98c3a19fd0712badeb3d9e2996 (patch)
treeb54531857b088ab2696aed4d61a1c122ba64232c /Source/cmMakefile.cxx
parentd5d661d2b259447edfc89d130878f3a9b2203ea1 (diff)
downloadCMake-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.cxx14
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])