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/artikulate-20.08.2/autotests/unittests/courseresource/test_courseresource.h Examining data/artikulate-20.08.2/autotests/unittests/courseresource/test_courseresource.cpp Examining data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.h Examining data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp Examining data/artikulate-20.08.2/autotests/unittests/skeletonresource/test_skeletonresource.cpp Examining data/artikulate-20.08.2/autotests/unittests/skeletonresource/test_skeletonresource.h Examining data/artikulate-20.08.2/autotests/unittests/coursemodel/test_coursemodel.h Examining data/artikulate-20.08.2/autotests/unittests/coursemodel/test_coursemodel.cpp Examining data/artikulate-20.08.2/autotests/unittests/resourcerepository/test_resourcerepository.cpp Examining data/artikulate-20.08.2/autotests/unittests/resourcerepository/test_resourcerepository.h Examining data/artikulate-20.08.2/autotests/unittests/unit/test_unit.h Examining data/artikulate-20.08.2/autotests/unittests/unit/test_unit.cpp Examining data/artikulate-20.08.2/autotests/unittests/skeletonmodel/test_skeletonmodel.h Examining data/artikulate-20.08.2/autotests/unittests/skeletonmodel/test_skeletonmodel.cpp Examining data/artikulate-20.08.2/autotests/unittests/editorsession/test_editorsession.cpp Examining data/artikulate-20.08.2/autotests/unittests/editorsession/test_editorsession.h Examining data/artikulate-20.08.2/autotests/unittests/trainingsession/test_trainingsession.h Examining data/artikulate-20.08.2/autotests/unittests/trainingsession/test_trainingsession.cpp Examining data/artikulate-20.08.2/autotests/resourcetests/xsdschemes/testxsdschemes.cpp Examining data/artikulate-20.08.2/autotests/resourcetests/xsdschemes/testxsdschemes.h Examining data/artikulate-20.08.2/autotests/resourcetests/languageresources/testlanguagefiles.cpp Examining data/artikulate-20.08.2/autotests/resourcetests/languageresources/testlanguagefiles.h Examining data/artikulate-20.08.2/autotests/mocks/coursestub.cpp Examining data/artikulate-20.08.2/autotests/mocks/languagestub.h Examining data/artikulate-20.08.2/autotests/mocks/coursestub.h Examining data/artikulate-20.08.2/autotests/mocks/editablecoursestub.cpp Examining data/artikulate-20.08.2/autotests/mocks/languagestub.cpp Examining data/artikulate-20.08.2/autotests/mocks/resourcerepositorystub.h Examining data/artikulate-20.08.2/autotests/mocks/resourcerepositorystub.cpp Examining data/artikulate-20.08.2/autotests/mocks/editablerepositorystub.cpp Examining data/artikulate-20.08.2/autotests/mocks/editablerepositorystub.h Examining data/artikulate-20.08.2/autotests/mocks/editablecoursestub.h Examining data/artikulate-20.08.2/autotests/integrationtests/iresourcerepository_integration/test_iresourcerepository.h Examining data/artikulate-20.08.2/autotests/integrationtests/iresourcerepository_integration/test_iresourcerepository.cpp Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediabackend.cpp Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediaoutputbackend.h Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediaoutputbackend.cpp Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediacapturebackend.h Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediacapturebackend.cpp Examining data/artikulate-20.08.2/libsound/src/qtmultimediabackend/qtmultimediabackend.h Examining data/artikulate-20.08.2/libsound/src/capturedevicecontroller.h Examining data/artikulate-20.08.2/libsound/src/backendinterface.cpp Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreamerbackend.cpp Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreamercapturebackend.h Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreameroutputbackend.h Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreamerbackend.h Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreamercapturebackend.cpp Examining data/artikulate-20.08.2/libsound/src/qtgstreamerbackend/qtgstreameroutputbackend.cpp Examining data/artikulate-20.08.2/libsound/src/libsound_debug.h Examining data/artikulate-20.08.2/libsound/src/outputbackendinterface.cpp Examining data/artikulate-20.08.2/libsound/src/capturebackendinterface.cpp Examining data/artikulate-20.08.2/libsound/src/backendinterface.h Examining data/artikulate-20.08.2/libsound/src/outputbackendinterface.h Examining data/artikulate-20.08.2/libsound/src/outputdevicecontroller.h Examining data/artikulate-20.08.2/libsound/src/capturebackendinterface.h Examining data/artikulate-20.08.2/libsound/src/libsound_debug.cpp Examining data/artikulate-20.08.2/libsound/src/outputdevicecontroller.cpp Examining data/artikulate-20.08.2/libsound/src/capturedevicecontroller.cpp Examining data/artikulate-20.08.2/liblearnerprofile/autotests/testlearnerstorage.h Examining data/artikulate-20.08.2/liblearnerprofile/autotests/testlearnerstorage.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/learninggoal.h Examining data/artikulate-20.08.2/liblearnerprofile/src/models/learninggoalmodel.h Examining data/artikulate-20.08.2/liblearnerprofile/src/models/learninggoalmodel.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/learner_p.h Examining data/artikulate-20.08.2/liblearnerprofile/src/profilemanager.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/learner.h Examining data/artikulate-20.08.2/liblearnerprofile/src/learner.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/storage.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/storage.h Examining data/artikulate-20.08.2/liblearnerprofile/src/liblearner_debug.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/profilemanager.h Examining data/artikulate-20.08.2/liblearnerprofile/src/learninggoal.cpp Examining data/artikulate-20.08.2/liblearnerprofile/src/liblearner_debug.h Examining data/artikulate-20.08.2/src/mainwindow_editor.cpp Examining data/artikulate-20.08.2/src/mainwindow.h Examining data/artikulate-20.08.2/src/qmlcontrols/iconitem.cpp Examining data/artikulate-20.08.2/src/qmlcontrols/imagetexturescache.h Examining data/artikulate-20.08.2/src/qmlcontrols/managedtexturenode.cpp Examining data/artikulate-20.08.2/src/qmlcontrols/imagetexturescache.cpp Examining data/artikulate-20.08.2/src/qmlcontrols/iconitem.h Examining data/artikulate-20.08.2/src/qmlcontrols/managedtexturenode.h Examining data/artikulate-20.08.2/src/models/languageresourcemodel.h Examining data/artikulate-20.08.2/src/models/languageresourcemodel.cpp Examining data/artikulate-20.08.2/src/models/skeletonmodel.cpp Examining data/artikulate-20.08.2/src/models/phonememodel.h Examining data/artikulate-20.08.2/src/models/phraselistmodel.h Examining data/artikulate-20.08.2/src/models/coursefiltermodel.h Examining data/artikulate-20.08.2/src/models/phrasemodel.h Examining data/artikulate-20.08.2/src/models/learningprogressmodel.cpp Examining data/artikulate-20.08.2/src/models/unitmodel.cpp Examining data/artikulate-20.08.2/src/models/learningprogressmodel.h Examining data/artikulate-20.08.2/src/models/phrasefiltermodel.h Examining data/artikulate-20.08.2/src/models/coursefiltermodel.cpp Examining data/artikulate-20.08.2/src/models/profilemodel.cpp Examining data/artikulate-20.08.2/src/models/phonemeunitmodel.cpp Examining data/artikulate-20.08.2/src/models/unitfiltermodel.cpp Examining data/artikulate-20.08.2/src/models/phonemeunitmodel.h Examining data/artikulate-20.08.2/src/models/phonemegroupmodel.cpp Examining data/artikulate-20.08.2/src/models/phonemegroupmodel.h Examining data/artikulate-20.08.2/src/models/skeletonmodel.h Examining data/artikulate-20.08.2/src/models/unitmodel.h Examining data/artikulate-20.08.2/src/models/phrasefiltermodel.cpp Examining data/artikulate-20.08.2/src/models/phraselistmodel.cpp Examining data/artikulate-20.08.2/src/models/phonememodel.cpp Examining data/artikulate-20.08.2/src/models/languagemodel.cpp Examining data/artikulate-20.08.2/src/models/coursemodel.h Examining data/artikulate-20.08.2/src/models/profilemodel.h Examining data/artikulate-20.08.2/src/models/phrasemodel.cpp Examining data/artikulate-20.08.2/src/models/languagemodel.h Examining data/artikulate-20.08.2/src/models/unitfiltermodel.h Examining data/artikulate-20.08.2/src/models/coursemodel.cpp Examining data/artikulate-20.08.2/src/application.cpp Examining data/artikulate-20.08.2/src/artikulate_debug.cpp Examining data/artikulate-20.08.2/src/mainwindow.cpp Examining data/artikulate-20.08.2/src/main_editor.cpp Examining data/artikulate-20.08.2/src/artikulate_debug.h Examining data/artikulate-20.08.2/src/mainwindow_editor.h Examining data/artikulate-20.08.2/src/main.cpp Examining data/artikulate-20.08.2/src/core/unit.cpp Examining data/artikulate-20.08.2/src/core/phrase.h Examining data/artikulate-20.08.2/src/core/resourcerepository.h Examining data/artikulate-20.08.2/src/core/language.h Examining data/artikulate-20.08.2/src/core/phoneme.h Examining data/artikulate-20.08.2/src/core/phonemegroup.cpp Examining data/artikulate-20.08.2/src/core/recorder.cpp Examining data/artikulate-20.08.2/src/core/ieditablecourse.h Examining data/artikulate-20.08.2/src/core/trainingaction.h Examining data/artikulate-20.08.2/src/core/iunit.h Examining data/artikulate-20.08.2/src/core/phoneme.cpp Examining data/artikulate-20.08.2/src/core/ilanguage.h Examining data/artikulate-20.08.2/src/core/language.cpp Examining data/artikulate-20.08.2/src/core/player.cpp Examining data/artikulate-20.08.2/src/core/trainingactionicon.cpp Examining data/artikulate-20.08.2/src/core/unit.h Examining data/artikulate-20.08.2/src/core/editorsession.cpp Examining data/artikulate-20.08.2/src/core/drawertrainingactions.cpp Examining data/artikulate-20.08.2/src/core/icourse.h Examining data/artikulate-20.08.2/src/core/contributorrepository.cpp Examining data/artikulate-20.08.2/src/core/drawertrainingactions.h Examining data/artikulate-20.08.2/src/core/isessionactions.h Examining data/artikulate-20.08.2/src/core/contributorrepository.h Examining data/artikulate-20.08.2/src/core/editorsession.h Examining data/artikulate-20.08.2/src/core/trainingsession.cpp Examining data/artikulate-20.08.2/src/core/trainingsession.h Examining data/artikulate-20.08.2/src/core/iphrase.h Examining data/artikulate-20.08.2/src/core/ieditablerepository.h Examining data/artikulate-20.08.2/src/core/resourcerepository.cpp Examining data/artikulate-20.08.2/src/core/phrase.cpp Examining data/artikulate-20.08.2/src/core/resources/courseresource.cpp Examining data/artikulate-20.08.2/src/core/resources/courseparser.cpp Examining data/artikulate-20.08.2/src/core/resources/skeletonresource.h Examining data/artikulate-20.08.2/src/core/resources/skeletonresource.cpp Examining data/artikulate-20.08.2/src/core/resources/courseparser.h Examining data/artikulate-20.08.2/src/core/resources/courseresource.h Examining data/artikulate-20.08.2/src/core/resources/editablecourseresource.h Examining data/artikulate-20.08.2/src/core/resources/editablecourseresource.cpp Examining data/artikulate-20.08.2/src/core/player.h Examining data/artikulate-20.08.2/src/core/trainingactionicon.h Examining data/artikulate-20.08.2/src/core/trainingaction.cpp Examining data/artikulate-20.08.2/src/core/recorder.h Examining data/artikulate-20.08.2/src/core/ieditablephrase.h Examining data/artikulate-20.08.2/src/core/iresourcerepository.h Examining data/artikulate-20.08.2/src/core/phonemegroup.h Examining data/artikulate-20.08.2/src/core/ieditableunit.h Examining data/artikulate-20.08.2/src/application.h FINAL RESULTS: data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:208: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:255: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:263: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:275: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:287: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:299: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:311: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/editablecourseresource/test_editablecourseresource.cpp:324: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). outputFile.open(); data/artikulate-20.08.2/autotests/unittests/skeletonresource/test_skeletonresource.cpp:150: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). outputFile.open(); data/artikulate-20.08.2/liblearnerprofile/autotests/testlearnerstorage.cpp:24: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). QVERIFY(m_db.open()); data/artikulate-20.08.2/liblearnerprofile/src/storage.cpp:526: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 (!db.open()) { data/artikulate-20.08.2/src/core/language.cpp:24: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). if (handle.open(QIODevice::ReadOnly)) { data/artikulate-20.08.2/src/core/recorder.cpp:40:27: [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). m_recordingBufferFile.open(); data/artikulate-20.08.2/src/core/resources/courseparser.cpp:47: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)) { data/artikulate-20.08.2/src/core/resources/courseparser.cpp:69: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)) { data/artikulate-20.08.2/src/core/resources/courseparser.cpp:381: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 (!tar.open(QIODevice::WriteOnly)) { data/artikulate-20.08.2/src/core/resources/courseresource.cpp:104: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)) { data/artikulate-20.08.2/src/core/resources/editablecourseresource.cpp:177:15: [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::WriteOnly)) { data/artikulate-20.08.2/src/core/resources/skeletonresource.cpp:34: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)) { data/artikulate-20.08.2/src/core/resources/skeletonresource.cpp:286:15: [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::WriteOnly)) { ANALYSIS SUMMARY: Hits = 20 Lines analyzed = 16344 in approximately 0.42 seconds (38587 lines/second) Physical Source Lines of Code (SLOC) = 11962 Hits@level = [0] 0 [1] 0 [2] 20 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 20 [1+] 20 [2+] 20 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.67196 [1+] 1.67196 [2+] 1.67196 [3+] 0 [4+] 0 [5+] 0 Dot directories skipped = 2 (--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.