summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2023-11-29 02:10:38 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2023-11-29 13:34:21 (GMT)
commitd01120a47a53fbe4bab1b1c313036f956dbf77d9 (patch)
treebbfd5d309d9df7c58d6f83d801034f96653cd141 /Source/cmGlobalGenerator.cxx
parent01deb5809854b1ce1fdaa8fd8e31adf31a134904 (diff)
downloadCMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.zip
CMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.tar.gz
CMake-d01120a47a53fbe4bab1b1c313036f956dbf77d9.tar.bz2
cmGlobalGenerator: clear RuntimeDependencySet members at configure
Commit f2617cf8e6 (Source: Add cmInstallRuntimeDependencySet, 2021-05-19) introduced via !6186 to 3.21 added storage to the global generator for runtime dependency sets. However, this was not cleared at the start of configure in the `ClearGeneratorMembers()` method. When using `ccmake` to configure (and, presumably `cmake-gui` too), projects using `install(TARGETS … RUNTIME_DEPENDENCY_SET)` would use dependency set tracking instances from previous configure runs that held references to targets free'd with the `cmMakefile` instance that held them. Clear the dependency sets at the beginning of configure so that they are not remembered and trigger via use-after-free bugs when used. Fixes: #25446
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r--Source/cmGlobalGenerator.cxx2
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index bec389f..c2b972d 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1999,6 +1999,8 @@ void cmGlobalGenerator::ClearGeneratorMembers()
this->DirectoryContentMap.clear();
this->BinaryDirectories.clear();
this->GeneratedFiles.clear();
+ this->RuntimeDependencySets.clear();
+ this->RuntimeDependencySetsByName.clear();
}
void cmGlobalGenerator::ComputeTargetObjectDirectory(