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/gm-assistant-1.2.3/sources/engine/Branch.cpp Examining data/gm-assistant-1.2.3/sources/engine/Branch.h Examining data/gm-assistant-1.2.3/sources/engine/Character.h Examining data/gm-assistant-1.2.3/sources/engine/CharacterList.h Examining data/gm-assistant-1.2.3/sources/engine/FileMapping.cpp Examining data/gm-assistant-1.2.3/sources/engine/FileMapping.h Examining data/gm-assistant-1.2.3/sources/engine/IOConfig.cpp Examining data/gm-assistant-1.2.3/sources/engine/IOConfig.h Examining data/gm-assistant-1.2.3/sources/engine/Metadata.cpp Examining data/gm-assistant-1.2.3/sources/engine/Metadata.h Examining data/gm-assistant-1.2.3/sources/engine/PropertyList.h Examining data/gm-assistant-1.2.3/sources/engine/Scenario.cpp Examining data/gm-assistant-1.2.3/sources/engine/Scenario.h Examining data/gm-assistant-1.2.3/sources/engine/Tree.cpp Examining data/gm-assistant-1.2.3/sources/engine/Tree.h Examining data/gm-assistant-1.2.3/sources/engine/Version.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/FileItem.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/FileItem.h Examining data/gm-assistant-1.2.3/sources/engine/items/ImageItem.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/ImageItem.h Examining data/gm-assistant-1.2.3/sources/engine/items/Item.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/Item.h Examining data/gm-assistant-1.2.3/sources/engine/items/ItemFactory.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/ItemFactory.h Examining data/gm-assistant-1.2.3/sources/engine/items/SoundItem.cpp Examining data/gm-assistant-1.2.3/sources/engine/items/SoundItem.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/CharacterModification.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/CharacterModification.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/MetadataModification.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/MetadataModification.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/Modification.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/Modification.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/ModificationQueue.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/ModificationQueue.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/NoteModification.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/NoteModification.h Examining data/gm-assistant-1.2.3/sources/engine/modifications/TreeModification.cpp Examining data/gm-assistant-1.2.3/sources/engine/modifications/TreeModification.h Examining data/gm-assistant-1.2.3/sources/engine/Character.cpp Examining data/gm-assistant-1.2.3/sources/engine/CharacterList.cpp Examining data/gm-assistant-1.2.3/sources/engine/PropertyList.cpp Examining data/gm-assistant-1.2.3/sources/main.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomHeaderView.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomHeaderView.h Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTableWidget.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTableWidget.h Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTextEdit.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTextEdit.h Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTreeWidget.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTreeWidget.h Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTreeWidgetItem.cpp Examining data/gm-assistant-1.2.3/sources/widgets/QCustomTreeWidgetItem.h Examining data/gm-assistant-1.2.3/sources/windows/AboutDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/AboutDialog.h Examining data/gm-assistant-1.2.3/sources/windows/ChangeCharacterDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/ChangeCharacterDialog.h Examining data/gm-assistant-1.2.3/sources/windows/ChangePropertyDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/ChangePropertyDialog.h Examining data/gm-assistant-1.2.3/sources/windows/CombatDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/CombatDialog.h Examining data/gm-assistant-1.2.3/sources/windows/DiceDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/DiceDialog.h Examining data/gm-assistant-1.2.3/sources/windows/ImageWindow.cpp Examining data/gm-assistant-1.2.3/sources/windows/ImageWindow.h Examining data/gm-assistant-1.2.3/sources/windows/ItemDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/ItemDialog.h Examining data/gm-assistant-1.2.3/sources/windows/MainWindow.cpp Examining data/gm-assistant-1.2.3/sources/windows/MainWindow.h Examining data/gm-assistant-1.2.3/sources/windows/MetadataDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/MetadataDialog.h Examining data/gm-assistant-1.2.3/sources/windows/SelectCharacterDialog.cpp Examining data/gm-assistant-1.2.3/sources/windows/SelectCharacterDialog.h FINAL RESULTS: data/gm-assistant-1.2.3/sources/windows/MainWindow.cpp:54:31: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. QString locale = QLocale::system().name().section('_',0,0); data/gm-assistant-1.2.3/sources/windows/DiceDialog.cpp:26:5: [3] (random) srand: 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. srand(time(0)); data/gm-assistant-1.2.3/sources/engine/Scenario.cpp:61:5: [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 buffer[BUFFER_SIZE]; data/gm-assistant-1.2.3/sources/windows/MainWindow.cpp:56:14: [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). if (file.open(QIODevice::ReadOnly | QIODevice::Text)) data/gm-assistant-1.2.3/sources/engine/Scenario.cpp:64:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). input_test.read(buffer, BUFFER_SIZE); ANALYSIS SUMMARY: Hits = 5 Lines analyzed = 11750 in approximately 0.39 seconds (30139 lines/second) Physical Source Lines of Code (SLOC) = 7281 Hits@level = [0] 0 [1] 1 [2] 2 [3] 1 [4] 1 [5] 0 Hits@level+ = [0+] 5 [1+] 5 [2+] 4 [3+] 2 [4+] 1 [5+] 0 Hits/KSLOC@level+ = [0+] 0.686719 [1+] 0.686719 [2+] 0.549375 [3+] 0.274688 [4+] 0.137344 [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.