1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-13 17:47:49 +08:00

get_directory_property: Check for empty or missing property name

Fixes: #21555
This commit is contained in:
Craig Scott
2020-12-06 09:38:12 +11:00
parent 14576a40ac
commit ab1ee5aab8
11 changed files with 48 additions and 20 deletions

View File

@@ -50,6 +50,10 @@ bool cmGetDirectoryPropertyCommand(std::vector<std::string> const& args,
return false;
}
++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
@@ -67,27 +71,30 @@ bool cmGetDirectoryPropertyCommand(std::vector<std::string> const& args,
return true;
}
const char* prop = nullptr;
if (!i->empty()) {
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));
if (i->empty()) {
status.SetError("given empty string for the property name to get");
return false;
}
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);
return true;
}

View File

@@ -2,6 +2,9 @@ include(RunCMake)
run_cmake(cache_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(install_properties)
run_cmake(source_properties)

View File

@@ -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\)

View File

@@ -0,0 +1 @@
get_directory_property(outVar "")

View File

@@ -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\)

View File

@@ -0,0 +1 @@
get_directory_property(outVar)

View File

@@ -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\)

View File

@@ -0,0 +1 @@
get_directory_property(outVar DIRECTORY .)