Reject directory names containing '=' (#11689)
Some characters are not well-supported by native build systems. Reject paths containing such characters before even trying to configure a project.
This commit is contained in:
parent
28a0403c34
commit
8704525f20
|
@ -1946,8 +1946,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();
|
||||
|
|
|
@ -435,6 +435,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.
|
||||
|
|
Loading…
Reference in New Issue