diff options
Diffstat (limited to 'Source/cmFileCommand.cxx')
-rw-r--r-- | Source/cmFileCommand.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 02b6913..dbb8799 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -102,6 +102,13 @@ bool cmFileCommand::HandleWriteCommand(std::vector<std::string> const& args, { message += *i; } + if ( !this->Makefile->CanIWriteThisFile(fileName.c_str()) ) + { + std::string e = "attempted to write a file: " + fileName + " into a source directory."; + this->SetError(e.c_str()); + cmSystemTools::SetFatalErrorOccured(); + return false; + } std::string dir = cmSystemTools::GetFilenamePath(fileName); cmSystemTools::MakeDirectory(dir.c_str()); @@ -279,6 +286,14 @@ bool cmFileCommand::HandleMakeDirectoryCommand( expr += "/" + *i; cdir = &expr; } + if ( !this->Makefile->CanIWriteThisFile(cdir->c_str()) ) + { + std::string e = "attempted to create a directory: " + *cdir + + " into a source directory."; + this->SetError(e.c_str()); + cmSystemTools::SetFatalErrorOccured(); + return false; + } if ( !cmSystemTools::MakeDirectory(cdir->c_str()) ) { std::string error = "problem creating directory: " + *cdir; |