mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 14:23:10 -05:00
get_directory_property: Check for empty or missing property name
Fixes: #21555
This commit is contained in:
@@ -50,6 +50,10 @@ bool cmGetDirectoryPropertyCommand(std::vector<std::string> const& args,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
|
if (i == args.end()) {
|
||||||
|
status.SetError("called with incorrect number of arguments");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OK, now we have the directory to process, we just get the requested
|
// OK, now we have the directory to process, we just get the requested
|
||||||
@@ -67,27 +71,30 @@ bool cmGetDirectoryPropertyCommand(std::vector<std::string> const& args,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* prop = nullptr;
|
if (i->empty()) {
|
||||||
if (!i->empty()) {
|
status.SetError("given empty string for the property name to get");
|
||||||
if (*i == "DEFINITIONS") {
|
return false;
|
||||||
switch (status.GetMakefile().GetPolicyStatus(cmPolicies::CMP0059)) {
|
|
||||||
case cmPolicies::WARN:
|
|
||||||
status.GetMakefile().IssueMessage(
|
|
||||||
MessageType::AUTHOR_WARNING,
|
|
||||||
cmPolicies::GetPolicyWarning(cmPolicies::CMP0059));
|
|
||||||
CM_FALLTHROUGH;
|
|
||||||
case cmPolicies::OLD:
|
|
||||||
StoreResult(status.GetMakefile(), variable,
|
|
||||||
status.GetMakefile().GetDefineFlagsCMP0059());
|
|
||||||
return true;
|
|
||||||
case cmPolicies::NEW:
|
|
||||||
case cmPolicies::REQUIRED_ALWAYS:
|
|
||||||
case cmPolicies::REQUIRED_IF_USED:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
prop = cmToCStr(dir->GetProperty(*i));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* prop = nullptr;
|
||||||
|
if (*i == "DEFINITIONS") {
|
||||||
|
switch (status.GetMakefile().GetPolicyStatus(cmPolicies::CMP0059)) {
|
||||||
|
case cmPolicies::WARN:
|
||||||
|
status.GetMakefile().IssueMessage(
|
||||||
|
MessageType::AUTHOR_WARNING,
|
||||||
|
cmPolicies::GetPolicyWarning(cmPolicies::CMP0059));
|
||||||
|
CM_FALLTHROUGH;
|
||||||
|
case cmPolicies::OLD:
|
||||||
|
StoreResult(status.GetMakefile(), variable,
|
||||||
|
status.GetMakefile().GetDefineFlagsCMP0059());
|
||||||
|
return true;
|
||||||
|
case cmPolicies::NEW:
|
||||||
|
case cmPolicies::REQUIRED_ALWAYS:
|
||||||
|
case cmPolicies::REQUIRED_IF_USED:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prop = cmToCStr(dir->GetProperty(*i));
|
||||||
StoreResult(status.GetMakefile(), variable, prop);
|
StoreResult(status.GetMakefile(), variable, prop);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ include(RunCMake)
|
|||||||
|
|
||||||
run_cmake(cache_properties)
|
run_cmake(cache_properties)
|
||||||
run_cmake(directory_properties)
|
run_cmake(directory_properties)
|
||||||
|
run_cmake(get_directory_property_empty)
|
||||||
|
run_cmake(get_directory_property_missing)
|
||||||
|
run_cmake(get_directory_property_missingWithDir)
|
||||||
run_cmake(global_properties)
|
run_cmake(global_properties)
|
||||||
run_cmake(install_properties)
|
run_cmake(install_properties)
|
||||||
run_cmake(source_properties)
|
run_cmake(source_properties)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
^CMake Error at get_directory_property_empty.cmake:1 \(get_directory_property\):
|
||||||
|
get_directory_property given empty string for the property name to get
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists\.txt:[0-9]+ \(include\)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
get_directory_property(outVar "")
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
^CMake Error at get_directory_property_missing.cmake:1 \(get_directory_property\):
|
||||||
|
get_directory_property called with incorrect number of arguments
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists\.txt:[0-9]+ \(include\)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
get_directory_property(outVar)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
^CMake Error at get_directory_property_missingWithDir.cmake:1 \(get_directory_property\):
|
||||||
|
get_directory_property called with incorrect number of arguments
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists\.txt:[0-9]+ \(include\)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
get_directory_property(outVar DIRECTORY .)
|
||||||
Reference in New Issue
Block a user