diff options
author | Sylvain Joubert <joubert.sy@gmail.com> | 2019-03-26 09:52:57 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-03-26 15:50:30 (GMT) |
commit | 1d16eae868b2542789de9d2b6224c8d3185540d4 (patch) | |
tree | cef4d99a252cf96b015e2d7a15c2d6776120c06c | |
parent | bf02d625325535f485512eba307cff54c08bb257 (diff) | |
download | CMake-1d16eae868b2542789de9d2b6224c8d3185540d4.zip CMake-1d16eae868b2542789de9d2b6224c8d3185540d4.tar.gz CMake-1d16eae868b2542789de9d2b6224c8d3185540d4.tar.bz2 |
ctest_coverage: fix out-of-bounds index in Jacoco parser
When the current source file is not found the FilePath variable was left
with the previous path content. In case the previous file had less lines
than the current one and there are 'line' entries for the current one
with higher number we ended up in a buffer overflow while indexing the
previous file entry with a line number higher. By clearing the
FilePath, the empty() guard triggers correctly on an empty path and it
avoid modifying the wrong data.
-rw-r--r-- | Source/CTest/cmParseJacocoCoverage.cxx | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Source/CTest/cmParseJacocoCoverage.cxx b/Source/CTest/cmParseJacocoCoverage.cxx index 61c5dcb..b78142a 100644 --- a/Source/CTest/cmParseJacocoCoverage.cxx +++ b/Source/CTest/cmParseJacocoCoverage.cxx @@ -29,6 +29,7 @@ protected: this->PackageName = atts[1]; this->PackagePath.clear(); } else if (name == "sourcefile") { + this->FilePath.clear(); std::string fileName = atts[1]; if (this->PackagePath.empty()) { |