summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Joubert <joubert.sy@gmail.com>2019-03-26 10:52:57 +0100
committerBrad King <brad.king@kitware.com>2019-03-26 11:50:30 -0400
commit1d16eae868b2542789de9d2b6224c8d3185540d4 (patch)
treecef4d99a252cf96b015e2d7a15c2d6776120c06c
parentbf02d625325535f485512eba307cff54c08bb257 (diff)
downloadcmake-1d16eae868b2542789de9d2b6224c8d3185540d4.tar.gz
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.cxx1
1 files changed, 1 insertions, 0 deletions
diff --git a/Source/CTest/cmParseJacocoCoverage.cxx b/Source/CTest/cmParseJacocoCoverage.cxx
index 61c5dcbbdb..b78142a813 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()) {