Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler. Number of rules (primarily dangerous function names) in C/C++ ruleset: 223 Examining data/kolf-20.04.3/scoreboard.h Examining data/kolf-20.04.3/kolf.cpp Examining data/kolf-20.04.3/kcomboboxdialog.h Examining data/kolf-20.04.3/game.cpp Examining data/kolf-20.04.3/tagaro/board.cpp Examining data/kolf-20.04.3/tagaro/board.h Examining data/kolf-20.04.3/tagaro/spriteobjectitem.h Examining data/kolf-20.04.3/tagaro/scene.h Examining data/kolf-20.04.3/tagaro/spriteobjectitem.cpp Examining data/kolf-20.04.3/tagaro/scene_p.h Examining data/kolf-20.04.3/tagaro/scene.cpp Examining data/kolf-20.04.3/vector.h Examining data/kolf-20.04.3/kolf.h Examining data/kolf-20.04.3/overlay.cpp Examining data/kolf-20.04.3/objects.cpp Examining data/kolf-20.04.3/editor.h Examining data/kolf-20.04.3/obstacles.cpp Examining data/kolf-20.04.3/itemfactory.cpp Examining data/kolf-20.04.3/landscape.cpp Examining data/kolf-20.04.3/ball.h Examining data/kolf-20.04.3/shape.cpp Examining data/kolf-20.04.3/obstacles.h Examining data/kolf-20.04.3/utils-animateditem.cpp Examining data/kolf-20.04.3/landscape.h Examining data/kolf-20.04.3/itemfactory.h Examining data/kolf-20.04.3/config.h Examining data/kolf-20.04.3/main.cpp Examining data/kolf-20.04.3/ball.cpp Examining data/kolf-20.04.3/editor.cpp Examining data/kolf-20.04.3/canvasitem.cpp Examining data/kolf-20.04.3/newgame.h Examining data/kolf-20.04.3/game.h Examining data/kolf-20.04.3/newgame.cpp Examining data/kolf-20.04.3/overlay.h Examining data/kolf-20.04.3/objects.h Examining data/kolf-20.04.3/external/Box2D/Collision/b2Collision.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2BroadPhase.h Examining data/kolf-20.04.3/external/Box2D/Collision/b2BroadPhase.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2Distance.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2CollideEdge.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2DynamicTree.h Examining data/kolf-20.04.3/external/Box2D/Collision/b2DynamicTree.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2Collision.h Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2LoopShape.h Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2Shape.h Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2LoopShape.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2CircleShape.h Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2EdgeShape.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2PolygonShape.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2CircleShape.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2EdgeShape.h Examining data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2PolygonShape.h Examining data/kolf-20.04.3/external/Box2D/Collision/b2TimeOfImpact.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2CollidePolygon.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2Distance.h Examining data/kolf-20.04.3/external/Box2D/Collision/b2CollideCircle.cpp Examining data/kolf-20.04.3/external/Box2D/Collision/b2TimeOfImpact.h Examining data/kolf-20.04.3/external/Box2D/Common/b2Math.cpp Examining data/kolf-20.04.3/external/Box2D/Common/b2Settings.h Examining data/kolf-20.04.3/external/Box2D/Common/b2BlockAllocator.cpp Examining data/kolf-20.04.3/external/Box2D/Common/b2GrowableStack.h Examining data/kolf-20.04.3/external/Box2D/Common/b2Math.h Examining data/kolf-20.04.3/external/Box2D/Common/b2BlockAllocator.h Examining data/kolf-20.04.3/external/Box2D/Common/b2Settings.cpp Examining data/kolf-20.04.3/external/Box2D/Common/b2StackAllocator.h Examining data/kolf-20.04.3/external/Box2D/Common/b2StackAllocator.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Body.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2ContactManager.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2World.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2TimeStep.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2WorldCallbacks.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2World.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2LoopAndPolygonContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2Contact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2LoopAndPolygonContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2ContactSolver.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2Contact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2LoopAndCircleContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2PolygonContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2ContactSolver.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2LoopAndCircleContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2CircleContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2PolygonContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Contacts/b2CircleContact.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Fixture.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2ContactManager.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Body.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Island.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Island.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2WorldCallbacks.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/b2Fixture.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2WeldJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2FrictionJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2PrismaticJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2MouseJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2GearJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2DistanceJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2Joint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2LineJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2GearJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2PulleyJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2RopeJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2LineJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2MouseJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2RevoluteJoint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2FrictionJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2DistanceJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2WeldJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2Joint.h Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2PulleyJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2RopeJoint.cpp Examining data/kolf-20.04.3/external/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp Examining data/kolf-20.04.3/kcomboboxdialog.cpp Examining data/kolf-20.04.3/config.cpp Examining data/kolf-20.04.3/utils-animateditem.h Examining data/kolf-20.04.3/canvasitem.h Examining data/kolf-20.04.3/scoreboard.cpp Examining data/kolf-20.04.3/shape.h FINAL RESULTS: data/kolf-20.04.3/game.cpp:2153:43: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. int newHole = 1 + (int)((double)KRandom::random() * ((double)(highestHole - 1) / (double)RAND_MAX)); data/kolf-20.04.3/objects.cpp:50:39: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. const QColor myColor((QRgb)(KRandom::random() % 0x01000000)); data/kolf-20.04.3/obstacles.cpp:54:49: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. betweenVector.direction() + deg2rad((KRandom::random() % 3) - 1) data/kolf-20.04.3/external/Box2D/Collision/Shapes/b2LoopShape.cpp:38:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(m_vertices, vertices, m_count * sizeof(b2Vec2)); data/kolf-20.04.3/external/Box2D/Collision/b2BroadPhase.cpp:73:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(m_moveBuffer, oldBuffer, m_moveCount * sizeof(int32)); data/kolf-20.04.3/external/Box2D/Collision/b2BroadPhase.cpp:108:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(m_pairBuffer, oldBuffer, m_pairCount * sizeof(b2Pair)); data/kolf-20.04.3/external/Box2D/Collision/b2DynamicTree.cpp:64:3: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(m_nodes, oldNodes, m_nodeCount * sizeof(b2DynamicTreeNode)); data/kolf-20.04.3/external/Box2D/Common/b2BlockAllocator.cpp:127:4: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk)); data/kolf-20.04.3/external/Box2D/Common/b2GrowableStack.h:54:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. std::memcpy(m_stack, old, m_count * sizeof(T)); data/kolf-20.04.3/external/Box2D/Common/b2StackAllocator.h:50:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char m_data[b2_stackSize]; data/kolf-20.04.3/kolf.cpp:626:11: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). tempFile.open(); ANALYSIS SUMMARY: Hits = 11 Lines analyzed = 29140 in approximately 2.23 seconds (13092 lines/second) Physical Source Lines of Code (SLOC) = 19416 Hits@level = [0] 1 [1] 0 [2] 8 [3] 3 [4] 0 [5] 0 Hits@level+ = [0+] 12 [1+] 11 [2+] 11 [3+] 3 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 0.618047 [1+] 0.566543 [2+] 0.566543 [3+] 0.154512 [4+] 0 [5+] 0 Dot directories skipped = 1 (--followdotdir overrides) Minimum risk level = 1 Not every hit is necessarily a security vulnerability. There may be other security vulnerabilities; review your code! See 'Secure Programming HOWTO' (https://dwheeler.com/secure-programs) for more information.