[PATCH v2] GcovData.cc: Fix out-of-bounds access errors
Ryan Long
ryan.long at oarcorp.com
Thu Aug 12 19:28:49 UTC 2021
Adjusted number of bytes to be read
CID 1506208: Out-of-bounds access
CID 1506209: Out-of-bounds access
Closes #4485
---
tester/covoar/GcovData.cc | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/tester/covoar/GcovData.cc b/tester/covoar/GcovData.cc
index 02e7489..3b787ec 100644
--- a/tester/covoar/GcovData.cc
+++ b/tester/covoar/GcovData.cc
@@ -129,7 +129,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;
@@ -399,11 +399,10 @@ namespace Gcov {
uint32_t desiredMagic
)
{
- int length;
-
- 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;
}
@@ -415,7 +414,7 @@ namespace Gcov {
return -1;
}
- return length / 4;
+ return sizeof( gcov_preamble ) / 4;
}
bool GcovData::readFunctionFrame(
--
1.8.3.1
More information about the devel
mailing list