summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerwincoumans <erwincoumans@google.com>2021-05-12 13:54:56 -0700
committerGitHub <noreply@github.com>2021-05-12 13:54:56 -0700
commit0e124cb2f103c40de4afac6c100b7e8e1f5d9e15 (patch)
treedc008564c65285a03e962bd91635b4fbe5c7ed53
parenta435fb7a41cdf09697b176372d9ffebe165334e6 (diff)
parent92fb2db0a36e5311b287d440116af3e1555bc2d5 (diff)
downloadbullet3-0e124cb2f103c40de4afac6c100b7e8e1f5d9e15.tar.gz
Merge pull request #3841 from erwincoumans/master
fix some msan (memory sanitizer) issues
-rw-r--r--Extras/Serialize/BulletFileLoader/bFile.cpp1
-rw-r--r--Extras/Serialize/BulletFileLoader/btBulletFile.cpp1
-rw-r--r--examples/Utils/b3BulletDefaultFileIO.h3
-rw-r--r--src/BulletCollision/CollisionDispatch/btManifoldResult.cpp2
-rw-r--r--src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h10
-rw-r--r--src/LinearMath/btAlignedAllocator.cpp7
6 files changed, 20 insertions, 4 deletions
diff --git a/Extras/Serialize/BulletFileLoader/bFile.cpp b/Extras/Serialize/BulletFileLoader/bFile.cpp
index 5c8f54fe3..107298718 100644
--- a/Extras/Serialize/BulletFileLoader/bFile.cpp
+++ b/Extras/Serialize/BulletFileLoader/bFile.cpp
@@ -75,6 +75,7 @@ bFile::bFile(const char *filename, const char headerString[7])
fseek(fp, 0L, SEEK_SET);
mFileBuffer = (char *)malloc(mFileLen + 1);
+ memset(mFileBuffer, 0, mFileLen+1);
size_t bytesRead;
bytesRead = fread(mFileBuffer, mFileLen, 1, fp);
diff --git a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
index 1f855f41f..74f27c4a5 100644
--- a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
+++ b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp
@@ -333,6 +333,7 @@ void btBulletFile::parse(int verboseMode)
if (m_DnaCopy)
delete m_DnaCopy;
m_DnaCopy = (char*)btAlignedAlloc(sBulletDNAlen64, 16);
+ memset(m_DnaCopy, 0, sBulletDNAlen64);
memcpy(m_DnaCopy, sBulletDNAstr64, sBulletDNAlen64);
parseInternal(verboseMode, m_DnaCopy, sBulletDNAlen64);
}
diff --git a/examples/Utils/b3BulletDefaultFileIO.h b/examples/Utils/b3BulletDefaultFileIO.h
index fa972de01..92ff34ee1 100644
--- a/examples/Utils/b3BulletDefaultFileIO.h
+++ b/examples/Utils/b3BulletDefaultFileIO.h
@@ -6,6 +6,8 @@
#include "b3ResourcePath.h"
#include <stdio.h>
+#include <string.h>
+
#define B3_FILEIO_MAX_FILES 1024
struct b3BulletDefaultFileIO : public CommonFileIOInterface
@@ -155,6 +157,7 @@ struct b3BulletDefaultFileIO : public CommonFileIOInterface
FILE* f = m_fileHandles[fileHandle];
if (f)
{
+ memset(destBuffer, 0, numBytes);
char* txt = ::fgets(destBuffer, numBytes, m_fileHandles[fileHandle]);
for (int i=0;i<numBytes;i++)
{
diff --git a/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
index 770eb2436..e4fe9e3e5 100644
--- a/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
+++ b/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
@@ -90,13 +90,11 @@ btManifoldResult::btManifoldResult(const btCollisionObjectWrapper* body0Wrap, co
: m_manifoldPtr(0),
m_body0Wrap(body0Wrap),
m_body1Wrap(body1Wrap)
-#ifdef DEBUG_PART_INDEX
,
m_partId0(-1),
m_partId1(-1),
m_index0(-1),
m_index1(-1)
-#endif //DEBUG_PART_INDEX
,
m_closestPointDistanceThreshold(0)
{
diff --git a/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
index 573fc86bf..520a7dfb6 100644
--- a/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
+++ b/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
@@ -72,11 +72,17 @@ public:
btScalar distance) : m_localPointA(pointA),
m_localPointB(pointB),
m_normalWorldOnB(normal),
+ m_positionWorldOnB(0,0,0),
+ m_positionWorldOnA(0,0,0),
m_distance1(distance),
m_combinedFriction(btScalar(0.)),
m_combinedRollingFriction(btScalar(0.)),
m_combinedSpinningFriction(btScalar(0.)),
m_combinedRestitution(btScalar(0.)),
+ m_partId0(-1),
+ m_partId1(-1),
+ m_index0(-1),
+ m_index1(-1),
m_userPersistentData(0),
m_contactPointFlags(0),
m_appliedImpulse(0.f),
@@ -88,7 +94,9 @@ public:
m_contactCFM(0.f),
m_contactERP(0.f),
m_frictionCFM(0.f),
- m_lifeTime(0)
+ m_lifeTime(0),
+ m_lateralFrictionDir1(0,0,0),
+ m_lateralFrictionDir2(0,0,0)
{
}
diff --git a/src/LinearMath/btAlignedAllocator.cpp b/src/LinearMath/btAlignedAllocator.cpp
index be8f8aa6d..a6e29a8a9 100644
--- a/src/LinearMath/btAlignedAllocator.cpp
+++ b/src/LinearMath/btAlignedAllocator.cpp
@@ -14,6 +14,7 @@ subject to the following restrictions:
*/
#include "btAlignedAllocator.h"
+#include <string.h>
#ifdef BT_DEBUG_MEMORY_ALLOCATIONS
int gNumAlignedAllocs = 0;
@@ -23,7 +24,9 @@ int gTotalBytesAlignedAllocs = 0; //detect memory leaks
static void *btAllocDefault(size_t size)
{
- return malloc(size);
+ char* data = (char*) malloc(size);
+ memset(data,0,size);//keep msan happy
+ return data;
}
static void btFreeDefault(void *ptr)
@@ -73,6 +76,8 @@ static inline void *btAlignedAllocDefault(size_t size, int alignment)
{
ret = (void *)(real);
}
+ //keep msan happy
+ memset((char*) ret, 0, size);
return (ret);
}