Merge topic 'disallow-funny-path-names'

8704525 Reject directory names containing '=' (#11689)
This commit is contained in:
Brad King 2011-02-22 14:31:07 -05:00 committed by CMake Topic Stage
commit 45efcc8fa6
2 changed files with 26 additions and 0 deletions

View File

@ -1986,8 +1986,32 @@ int cmake::Configure()
}
bool cmake::RejectUnsupportedPaths(const char* desc, std::string const& path)
{
// Some characters are not well-supported by native build systems.
std::string::size_type pos = path.find_first_of("=");
if(pos == std::string::npos)
{
return false;
}
cmOStringStream e;
e << "The path to the " << desc << " directory:\n"
<< " " << path << "\n"
<< "contains unsupported character '" << path[pos] << "'.\n"
<< "Please use a different " << desc << " directory name.";
cmListFileBacktrace bt;
this->IssueMessage(cmake::FATAL_ERROR, e.str(), bt);
return true;
}
int cmake::ActualConfigure()
{
if(this->RejectUnsupportedPaths("source", this->cmHomeDirectory) ||
this->RejectUnsupportedPaths("binary", this->HomeOutputDirectory))
{
return 1;
}
// Construct right now our path conversion table before it's too late:
this->UpdateConversionPathTable();
this->CleanupCommandsAndMacros();

View File

@ -451,6 +451,8 @@ protected:
///! Find the full path to one of the cmake programs like ctest, cpack, etc.
std::string FindCMakeProgram(const char* name) const;
bool RejectUnsupportedPaths(const char* desc, std::string const& path);
private:
cmake(const cmake&); // Not implemented.
void operator=(const cmake&); // Not implemented.