summaryrefslogtreecommitdiffstats
path: root/tester/covoar/GcovData.cc
diff options
context:
space:
mode:
authorRyan Long <ryan.long@oarcorp.com>2021-08-17 10:11:48 -0400
committerJoel Sherrill <joel@rtems.org>2021-08-20 12:47:02 -0500
commit0ab060ff2c52159d2fd7aba7ea58454ee7491973 (patch)
treee156af205ff467f999c18543d0f1ab67cc46273c /tester/covoar/GcovData.cc
parentReportsText.cc: Add ostream_guard (diff)
downloadrtems-tools-0ab060ff2c52159d2fd7aba7ea58454ee7491973.tar.bz2
GcovData.cc: Fix out-of-bounds access errors
Adjusted number of bytes to be read, removed length variable CID 1506208: Out-of-bounds access CID 1506209: Out-of-bounds access Closes #4485
Diffstat (limited to 'tester/covoar/GcovData.cc')
-rw-r--r--tester/covoar/GcovData.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/tester/covoar/GcovData.cc b/tester/covoar/GcovData.cc
index d4acfa4..44928a9 100644
--- a/tester/covoar/GcovData.cc
+++ b/tester/covoar/GcovData.cc
@@ -130,7 +130,7 @@ namespace Gcov {
preamble.timestamp = gcnoPreamble.timestamp;
//Write preamble
- gcdaFile.write( (char *) &preamble , 4 * sizeof( preamble ) );
+ gcdaFile.write( (char *) &preamble , sizeof( preamble ) );
if ( gcdaFile.fail() ) {
std::cerr << "Error while writing gcda preamble to a file "
<< gcdaFileName << std::endl;
@@ -400,13 +400,12 @@ namespace Gcov {
uint32_t desiredMagic
)
{
- int length;
-
rtems::utils::ostream_guard old_state( std::cerr );
- length = sizeof( gcov_preamble );
- gcovFile.read( (char *) &preamble, 4 * sizeof( gcov_preamble ) );
- if ( gcovFile.gcount() != 4 * sizeof( gcov_preamble ) ) {
+ // Read the gcov preamble and make sure it is the right length and has the
+ // magic number
+ gcovFile.read( (char *) &preamble, sizeof( gcov_preamble ) );
+ if ( gcovFile.gcount() != sizeof( gcov_preamble ) ) {
std::cerr << "Error while reading file preamble" << std::endl;
return -1;
}
@@ -418,7 +417,7 @@ namespace Gcov {
return -1;
}
- return length / 4;
+ return sizeof( gcov_preamble ) / 4;
}
bool GcovData::readFunctionFrame(