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/equalx-0.7.1/include/BookmarksPanel/DialogPreferencesBookmark.h Examining data/equalx-0.7.1/include/BookmarksPanel/BookmarkItem.h Examining data/equalx-0.7.1/include/BookmarksPanel/BookmarksWidget.h Examining data/equalx-0.7.1/include/BookmarksPanel/DialogPreferencesFolder.h Examining data/equalx-0.7.1/include/BookmarksPanel/BookmarksView.h Examining data/equalx-0.7.1/include/BookmarksPanel/BookmarksViewItemDelegate.h Examining data/equalx-0.7.1/include/BookmarksPanel/BookmarksItemModel.h Examining data/equalx-0.7.1/include/FileInfo.h Examining data/equalx-0.7.1/include/DialogAbout.h Examining data/equalx-0.7.1/include/LatexHighlighter.h Examining data/equalx-0.7.1/include/equationimage.h Examining data/equalx-0.7.1/include/File.h Examining data/equalx-0.7.1/include/EquationArea.h Examining data/equalx-0.7.1/include/EquationTemplateWidget.h Examining data/equalx-0.7.1/include/SearchLineEdit.h Examining data/equalx-0.7.1/include/HLSelections.h Examining data/equalx-0.7.1/include/RenderEngine.h Examining data/equalx-0.7.1/include/LatexEditor.h Examining data/equalx-0.7.1/include/ColorChooser.h Examining data/equalx-0.7.1/include/SymbolsGroupMenu.h Examining data/equalx-0.7.1/include/MainWindow.h Examining data/equalx-0.7.1/include/Library/Library.h Examining data/equalx-0.7.1/include/Library/LibraryData.h Examining data/equalx-0.7.1/include/DialogPreferences.h Examining data/equalx-0.7.1/include/HistoryPanel/HistoryListModel.h Examining data/equalx-0.7.1/include/HistoryPanel/HistoryView.h Examining data/equalx-0.7.1/include/HistoryPanel/HistoryWidget.h Examining data/equalx-0.7.1/include/HistoryPanel/HistoryViewItemDelegate.h Examining data/equalx-0.7.1/include/SymbolsGroupWidget.h Examining data/equalx-0.7.1/include/WidgetColorPicker.h Examining data/equalx-0.7.1/include/Util.h Examining data/equalx-0.7.1/include/Symbol.h Examining data/equalx-0.7.1/include/SymbolsPanel.h Examining data/equalx-0.7.1/include/WidgetFind.h Examining data/equalx-0.7.1/include/DialogReplace.h Examining data/equalx-0.7.1/include/defines.h Examining data/equalx-0.7.1/include/EquationView.h Examining data/equalx-0.7.1/src/EquationTemplateWidget.cpp Examining data/equalx-0.7.1/src/EquationView.cpp Examining data/equalx-0.7.1/src/File.cpp Examining data/equalx-0.7.1/src/DialogAbout.cpp Examining data/equalx-0.7.1/src/WidgetFind.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/BookmarksView.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/BookmarksViewItemDelegate.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/BookmarksWidget.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/DialogPreferencesFolder.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/DialogPreferencesBookmark.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/BookmarksItemModel.cpp Examining data/equalx-0.7.1/src/BookmarksPanel/BookmarkItem.cpp Examining data/equalx-0.7.1/src/MainWindow.cpp Examining data/equalx-0.7.1/src/ColorChooser.cpp Examining data/equalx-0.7.1/src/LatexEditor.cpp Examining data/equalx-0.7.1/src/Library/LibraryData.cpp Examining data/equalx-0.7.1/src/Library/Library.cpp Examining data/equalx-0.7.1/src/equationimage.cpp Examining data/equalx-0.7.1/src/HistoryPanel/HistoryWidget.cpp Examining data/equalx-0.7.1/src/HistoryPanel/HistoryView.cpp Examining data/equalx-0.7.1/src/HistoryPanel/HistoryViewItemDelegate.cpp Examining data/equalx-0.7.1/src/HistoryPanel/HistoryListModel.cpp Examining data/equalx-0.7.1/src/main.cpp Examining data/equalx-0.7.1/src/WidgetColorPicker.cpp Examining data/equalx-0.7.1/src/SymbolsPanel.cpp Examining data/equalx-0.7.1/src/FileWin.cpp Examining data/equalx-0.7.1/src/Symbol.cpp Examining data/equalx-0.7.1/src/Util.cpp Examining data/equalx-0.7.1/src/FileInfo.cpp Examining data/equalx-0.7.1/src/SymbolsGroupMenu.cpp Examining data/equalx-0.7.1/src/EquationArea.cpp Examining data/equalx-0.7.1/src/RenderEngine.cpp Examining data/equalx-0.7.1/src/SymbolsGroupWidget.cpp Examining data/equalx-0.7.1/src/DialogReplace.cpp Examining data/equalx-0.7.1/src/LatexHighlighter.cpp Examining data/equalx-0.7.1/src/SearchLineEdit.cpp Examining data/equalx-0.7.1/src/DialogPreferences.cpp FINAL RESULTS: data/equalx-0.7.1/include/File.h:51:10: [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). void open(const QString& filename, EqualX::File::OpenModes mode=EqualX::File::OPEN_UPDATE); data/equalx-0.7.1/include/MainWindow.h:105:10: [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). void open(); data/equalx-0.7.1/src/DialogAbout.cpp:63:18: [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/equalx-0.7.1/src/DialogAbout.cpp:83:18: [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/equalx-0.7.1/src/File.cpp:178:20: [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). void EqualX::File::open(const QString &filename, EqualX::File::OpenModes mode) data/equalx-0.7.1/src/File.cpp:295: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). file.open(QIODevice::ReadWrite | QIODevice::Text); data/equalx-0.7.1/src/File.cpp:323:12: [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). in.open(QIODevice::ReadOnly); out.open(QIODevice::WriteOnly); data/equalx-0.7.1/src/File.cpp:323:43: [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). in.open(QIODevice::ReadOnly); out.open(QIODevice::WriteOnly); data/equalx-0.7.1/src/File.cpp:469:13: [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). texFile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/File.cpp:487:16: [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). tmpTexFile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/File.cpp:503:18: [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). metadatafile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/File.cpp:529:7: [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). f.open(filename, mode); data/equalx-0.7.1/src/FileWin.cpp:182:20: [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). void EqualX::File::open(const QString &filename, EqualX::File::OpenModes mode) data/equalx-0.7.1/src/FileWin.cpp:301: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). file.open(QIODevice::ReadWrite | QIODevice::Text); data/equalx-0.7.1/src/FileWin.cpp:334:12: [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). in.open(QIODevice::ReadOnly); out.open(QIODevice::WriteOnly); data/equalx-0.7.1/src/FileWin.cpp:334:43: [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). in.open(QIODevice::ReadOnly); out.open(QIODevice::WriteOnly); data/equalx-0.7.1/src/FileWin.cpp:480:13: [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). texFile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/FileWin.cpp:498:16: [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). tmpTexFile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/FileWin.cpp:515:18: [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). metadatafile.open(QIODevice::WriteOnly | QIODevice::Text); data/equalx-0.7.1/src/FileWin.cpp:539:7: [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). f.open(filename, mode); data/equalx-0.7.1/src/LatexEditor.cpp:112: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(QFile::ReadOnly) ) data/equalx-0.7.1/src/Library/Library.cpp:95:13: [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(!mDB.open()) data/equalx-0.7.1/src/Library/Library.cpp:138:9: [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). mDB.open(); data/equalx-0.7.1/src/Library/Library.cpp:142:10: [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). file.open(QIODevice::ReadOnly); data/equalx-0.7.1/src/Library/Library.cpp:144: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 buf[2048]; data/equalx-0.7.1/src/MainWindow.cpp:420:61: [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). connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(open()) ); data/equalx-0.7.1/src/MainWindow.cpp:566:7: [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). f.open(QIODevice::ReadOnly); data/equalx-0.7.1/src/MainWindow.cpp:579:18: [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). void MainWindow::open() data/equalx-0.7.1/src/RenderEngine.cpp:232: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). mFile.open(TEMP_FILE_NAME"."+filetype); data/equalx-0.7.1/src/RenderEngine.cpp:432: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). mFile.open(filename); data/equalx-0.7.1/src/main.cpp:30:13: [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/equalx-0.7.1/include/File.h:54:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool read(); // read metadata from the current file and set FileInfo and Metadata data/equalx-0.7.1/src/File.cpp:214:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool EqualX::File::read() data/equalx-0.7.1/src/File.cpp:530:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool readStatus = f.read(); data/equalx-0.7.1/src/FileWin.cpp:226:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool EqualX::File::read() data/equalx-0.7.1/src/FileWin.cpp:540:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool readStatus = f.read(); ANALYSIS SUMMARY: Hits = 36 Lines analyzed = 11414 in approximately 0.32 seconds (35280 lines/second) Physical Source Lines of Code (SLOC) = 7217 Hits@level = [0] 0 [1] 5 [2] 31 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 36 [1+] 36 [2+] 31 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 4.98822 [1+] 4.98822 [2+] 4.29541 [3+] 0 [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.