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/freespace2-launcher-wxlauncher-0.11.0+dfsg/cmake/test_wxstl.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/MainWindow.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/MainWindow.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/CmdLineManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/CmdLineManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/EventHandlers.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/EventHandlers.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FREDManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FREDManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FileProfileManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/HelpManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/HelpManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/JoystickManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/JoystickManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/OpenALManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/OpenALManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/PlatformProfileManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/PlatformProfileManagerShared.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileManagerOperator.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileManagerOperator.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileProxy.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/ProfileProxy.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/RegistryProfileManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SkinManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SkinManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SpeechManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SpeechManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/TCManager.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/TCManager.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/BottomButtons.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/BottomButtons.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/FlagListBox.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/FlagListBox.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/LightingPresets.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/LightingPresets.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/Logger.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/Logger.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/ModList.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/ModList.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/StatusBar.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/StatusBar.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/TruncatableChoice.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/TruncatableChoice.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/FSOExecutable.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/FSOExecutable.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/FlagFileData.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/FlagFileData.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/FlagInfo.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/NewsSource.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/NewsSource.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/ResolutionMap.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/datastructures/ResolutionMap.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/BasicDefaults.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/BasicDefaults.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/Compatibility.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/Compatibility.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/MemoryDebugging.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ModDefaults.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ModDefaults.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ModIniKeys.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ModIniKeys.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ProfileKeys.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ProfileKeys.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/RegistryKeys.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/RegistryKeys.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/SkinDefaults.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/SkinDefaults.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/Utils.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/Utils.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/ids.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/targetver.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/version.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/global/version.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/AdvSettingsPage.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/AdvSettingsPage.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/BasicSettingsPage.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/BasicSettingsPage.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/InstallPage.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/InstallPage.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/ModsPage.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/ModsPage.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/WelcomePage.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/tabs/WelcomePage.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/wxLauncherApp.cpp Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/wxLauncherApp.h Examining data/freespace2-launcher-wxlauncher-0.11.0+dfsg/platform/win32/registry_helper.cpp FINAL RESULTS: data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/JoystickManager.cpp:291:2: [4] (shell) WinExec: 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. WinExec("rundll32.exe shell32.dll,Control_RunDLL joy.cpl", SW_SHOWNORMAL); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:385:3: [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 easy_flag[32]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:402:3: [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 flag_string[20]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:403:3: [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 description[40]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:405:3: [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 easy_catagory[16], web_url[256]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/JoystickManager.cpp:171: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 guidStr[33]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/ModList.cpp:716: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 header[3]; data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:391:47: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). wxString easyFlagStr(easy_flag, wxConvUTF8, strlen(easy_flag)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:456:56: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). flag->flagString = wxString(flag_string, wxConvUTF8, strlen(flag_string)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:457:62: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). flag->shortDescription = wxString(description, wxConvUTF8, strlen(description)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:458:48: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). flag->webURL = wxString(web_url, wxConvUTF8, strlen(web_url)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/FlagListManager.cpp:459:59: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). flag->fsoCatagory = wxString(easy_catagory, wxConvUTF8, strlen(easy_catagory)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/OpenALManager.cpp:216:11: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). len = strlen(devices+offset); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SpeechManager.cpp:135:21: [1] (buffer) wcslen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t idlength = wcslen(id); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/apis/SpeechManager.cpp:140:60: [1] (buffer) wcslen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). voices.push_back(VoiceData(wxString(id, wxMBConvUTF16(), wcslen(id)), comAVoice)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/Logger.cpp:64:28: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). this->out->Write(exitmsg, strlen(exitmsg)); data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/ModList.cpp:739:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ( read != size ) { data/freespace2-launcher-wxlauncher-0.11.0+dfsg/code/controls/ModList.cpp:740:75: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). wxLogError(wxT("read (") SZT wxT(") not equal to size (") SZT wxT(")"), read, size); ANALYSIS SUMMARY: Hits = 18 Lines analyzed = 18767 in approximately 0.53 seconds (35347 lines/second) Physical Source Lines of Code (SLOC) = 13446 Hits@level = [0] 0 [1] 11 [2] 6 [3] 0 [4] 1 [5] 0 Hits@level+ = [0+] 18 [1+] 18 [2+] 7 [3+] 1 [4+] 1 [5+] 0 Hits/KSLOC@level+ = [0+] 1.33869 [1+] 1.33869 [2+] 0.520601 [3+] 0.0743716 [4+] 0.0743716 [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.