diff options
author | R2RT <artur.ryt@gmail.com> | 2018-04-08 20:56:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-04-09 15:59:07 (GMT) |
commit | aad360eb3d07fc34048f3065e2d3617fa07f2932 (patch) | |
tree | 8149a890d1e37916ab34deaeeedf9beb541c4fa5 /Source/cmCommandArgumentParserHelper.cxx | |
parent | 61fd4c742013a7f9139db190f936703b656540ff (diff) | |
download | CMake-aad360eb3d07fc34048f3065e2d3617fa07f2932.zip CMake-aad360eb3d07fc34048f3065e2d3617fa07f2932.tar.gz CMake-aad360eb3d07fc34048f3065e2d3617fa07f2932.tar.bz2 |
Fix crash with --trace-expand --warn-uninitialized together
Some code paths in `ExpandVariablesInString{New,Old}` were not checking
the `filename` parameter for a null pointer, but this can happen when
using the above flags together. Add the checks and a test case.
Fixes: #17896
Diffstat (limited to 'Source/cmCommandArgumentParserHelper.cxx')
-rw-r--r-- | Source/cmCommandArgumentParserHelper.cxx | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index bf314bd..ccb4f88 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -101,10 +101,11 @@ const char* cmCommandArgumentParserHelper::ExpandVariable(const char* var) // not been "cleared"/initialized with a set(foo ) call if (this->WarnUninitialized && !this->Makefile->VariableInitialized(var)) { if (this->CheckSystemVars || - cmSystemTools::IsSubDirectory(this->FileName, - this->Makefile->GetHomeDirectory()) || - cmSystemTools::IsSubDirectory( - this->FileName, this->Makefile->GetHomeOutputDirectory())) { + (this->FileName && + (cmSystemTools::IsSubDirectory( + this->FileName, this->Makefile->GetHomeDirectory()) || + cmSystemTools::IsSubDirectory( + this->FileName, this->Makefile->GetHomeOutputDirectory())))) { std::ostringstream msg; msg << "uninitialized variable \'" << var << "\'"; this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, msg.str()); |