Browse Source

Merge topic 'multiline-cache-help' into release-4.0

637a0f7ed4 cmCacheManager: Prevent corruption from multiline help strings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10290
pull/376/head
Brad King 6 months ago
committed by Kitware Robot
parent
commit
ae68964f5d
  1. 2
      Source/cmCacheManager.cxx
  2. 21
      Tests/RunCMake/Configure/CacheVarHelpString.cmake
  3. 6
      Tests/RunCMake/Configure/RunCMakeTest.cmake

2
Source/cmCacheManager.cxx

@ -414,7 +414,7 @@ void cmCacheManager::OutputHelpString(std::ostream& fout,
}
std::string oneLine;
std::string::size_type pos = 0;
for (std::string::size_type i = 0; i <= end; i++) {
for (std::string::size_type i = 1; i <= end; i++) {
if ((i == end) || (helpString[i] == '\n') ||
((i - pos >= 60) && (helpString[i] == ' '))) {
fout << "//";

21
Tests/RunCMake/Configure/CacheVarHelpString.cmake

@ -0,0 +1,21 @@
# Various newline possibilities
set(help_strings
"\n"
"\n\n\n"
"\n \n"
"\nline1"
"line1\n"
"\nline1\n"
"line1\nline2\nline3"
"\nline1\nline2\nline3\n"
"
line line line line line line line line line line line line line line line line
line line line line line line line line line line line line line line line line
line line line line line line line line line line line line line line line line"
)
foreach(help IN LISTS help_strings)
string(SHA1 name "${help}")
set("${name}" "" CACHE STRING "${help}" FORCE)
endforeach()

6
Tests/RunCMake/Configure/RunCMakeTest.cmake

@ -64,6 +64,12 @@ if(NOT RunCMake_GENERATOR MATCHES "^Ninja Multi-Config$")
run_cmake(NoCMAKE_DEFAULT_CONFIGS)
endif()
block()
run_cmake(CacheVarHelpString)
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake(CacheVarHelpString)
endblock()
if(NOT CMAKE_HOST_WIN32)
block()
# Test a non-writable build directory.

Loading…
Cancel
Save