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.