[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34347] trunk/blender/extern/bullet2: fix for using un-initialized stack memory with bullet triangle mesh collisions .

Campbell Barton ideasman42 at gmail.com
Sun Jan 16 07:16:29 CET 2011


Revision: 34347
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34347
Author:   campbellbarton
Date:     2011-01-16 06:16:28 +0000 (Sun, 16 Jan 2011)
Log Message:
-----------
fix for using un-initialized stack memory with bullet triangle mesh collisions.
the 4th component of the vector is used later when copying the vector.

Modified Paths:
--------------
    trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp

Added Paths:
-----------
    trunk/blender/extern/bullet2/uninitialized_stack_vec.patch

Modified: trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
===================================================================
--- trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp	2011-01-16 06:00:55 UTC (rev 34346)
+++ trunk/blender/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp	2011-01-16 06:16:28 UTC (rev 34347)
@@ -61,10 +61,12 @@
 	scaledAabbMin[0] = m_localScaling.getX() >= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0];
 	scaledAabbMin[1] = m_localScaling.getY() >= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1];
 	scaledAabbMin[2] = m_localScaling.getZ() >= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2];
+	scaledAabbMin[3] = 0.0; /* otherwise un-initialized stack memory: uninitialized_stack_vec.patch, blender patch */
 	
 	scaledAabbMax[0] = m_localScaling.getX() <= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0];
 	scaledAabbMax[1] = m_localScaling.getY() <= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1];
 	scaledAabbMax[2] = m_localScaling.getZ() <= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2];
+	scaledAabbMax[3] = 0.0; /* otherwise un-initialized stack memory: uninitialized_stack_vec.patch, blender patch */
 	
 	
 	m_bvhTriMeshShape->processAllTriangles(&scaledCallback,scaledAabbMin,scaledAabbMax);

Added: trunk/blender/extern/bullet2/uninitialized_stack_vec.patch
===================================================================
--- trunk/blender/extern/bullet2/uninitialized_stack_vec.patch	                        (rev 0)
+++ trunk/blender/extern/bullet2/uninitialized_stack_vec.patch	2011-01-16 06:16:28 UTC (rev 34347)
@@ -0,0 +1,17 @@
+Index: src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
+===================================================================
+--- src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp	(revision 34336)
++++ src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp	(working copy)
+@@ -61,10 +61,12 @@
+ 	scaledAabbMin[0] = m_localScaling.getX() >= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0];
+ 	scaledAabbMin[1] = m_localScaling.getY() >= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1];
+ 	scaledAabbMin[2] = m_localScaling.getZ() >= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2];
++	scaledAabbMin[3] = 0.0; /* otherwise un-initialized stack memory: uninitialized_stack_vec.patch, blender patch */
+ 	
+ 	scaledAabbMax[0] = m_localScaling.getX() <= 0. ? aabbMin[0] * invLocalScaling[0] : aabbMax[0] * invLocalScaling[0];
+ 	scaledAabbMax[1] = m_localScaling.getY() <= 0. ? aabbMin[1] * invLocalScaling[1] : aabbMax[1] * invLocalScaling[1];
+ 	scaledAabbMax[2] = m_localScaling.getZ() <= 0. ? aabbMin[2] * invLocalScaling[2] : aabbMax[2] * invLocalScaling[2];
++	scaledAabbMax[3] = 0.0; /* otherwise un-initialized stack memory: uninitialized_stack_vec.patch, blender patch */
+ 	
+ 	
+ 	m_bvhTriMeshShape->processAllTriangles(&scaledCallback,scaledAabbMin,scaledAabbMax);




More information about the Bf-blender-cvs mailing list