summaryrefslogtreecommitdiffstats
path: root/Source/cmFileCommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmFileCommand.cxx')
-rw-r--r--Source/cmFileCommand.cxx15
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;