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/juk-20.04.3/tageditor.cpp
Examining data/juk-20.04.3/tagrenameroptions.h
Examining data/juk-20.04.3/filerenamer.cpp
Examining data/juk-20.04.3/tracksequencemanager.cpp
Examining data/juk-20.04.3/directorylist.cpp
Examining data/juk-20.04.3/dynamicplaylist.cpp
Examining data/juk-20.04.3/tagguesser.cpp
Examining data/juk-20.04.3/tagguesserconfigdlg.cpp
Examining data/juk-20.04.3/playlistbox.cpp
Examining data/juk-20.04.3/keydialog.cpp
Examining data/juk-20.04.3/mediafiles.h
Examining data/juk-20.04.3/collectionlist.cpp
Examining data/juk-20.04.3/tagguesserconfigdlg.h
Examining data/juk-20.04.3/juktag.h
Examining data/juk-20.04.3/tracksequencemanager.h
Examining data/juk-20.04.3/exampleoptions.h
Examining data/juk-20.04.3/collectionlist.h
Examining data/juk-20.04.3/directorylist.h
Examining data/juk-20.04.3/directoryloader.h
Examining data/juk-20.04.3/searchwidget.h
Examining data/juk-20.04.3/playlistsplitter.h
Examining data/juk-20.04.3/volumepopupbutton.cpp
Examining data/juk-20.04.3/directoryloader.cpp
Examining data/juk-20.04.3/tageditor.h
Examining data/juk-20.04.3/categoryreaderinterface.h
Examining data/juk-20.04.3/filehandleproperties.h
Examining data/juk-20.04.3/searchplaylist.cpp
Examining data/juk-20.04.3/playlistitem.h
Examining data/juk-20.04.3/viewmode.h
Examining data/juk-20.04.3/historyplaylist.cpp
Examining data/juk-20.04.3/stringhash.h
Examining data/juk-20.04.3/systemtray.cpp
Examining data/juk-20.04.3/treeviewitemplaylist.cpp
Examining data/juk-20.04.3/tests/tagguessertest.cpp
Examining data/juk-20.04.3/slideraction.h
Examining data/juk-20.04.3/folderplaylist.h
Examining data/juk-20.04.3/svghandler.cpp
Examining data/juk-20.04.3/jukIface.h
Examining data/juk-20.04.3/coverdialog.cpp
Examining data/juk-20.04.3/juktag.cpp
Examining data/juk-20.04.3/covericonview.h
Examining data/juk-20.04.3/playlist.cpp
Examining data/juk-20.04.3/cache.cpp
Examining data/juk-20.04.3/playlistsearch.cpp
Examining data/juk-20.04.3/playlistsharedsettings.h
Examining data/juk-20.04.3/filerenamer.h
Examining data/juk-20.04.3/filehandle.h
Examining data/juk-20.04.3/advancedsearchdialog.h
Examining data/juk-20.04.3/deletedialog.h
Examining data/juk-20.04.3/covermanager.cpp
Examining data/juk-20.04.3/tracksequenceiterator.cpp
Examining data/juk-20.04.3/searchplaylist.h
Examining data/juk-20.04.3/filerenamerconfigdlg.cpp
Examining data/juk-20.04.3/mpris2/mediaplayer2.h
Examining data/juk-20.04.3/mpris2/mediaplayer2player.cpp
Examining data/juk-20.04.3/mpris2/mpris2.h
Examining data/juk-20.04.3/mpris2/mediaplayer2.cpp
Examining data/juk-20.04.3/mpris2/mediaplayer2player.h
Examining data/juk-20.04.3/mpris2/mpris2.cpp
Examining data/juk-20.04.3/stringshare.cpp
Examining data/juk-20.04.3/coverproxy.cpp
Examining data/juk-20.04.3/categoryreaderinterface.cpp
Examining data/juk-20.04.3/playlistinterface.h
Examining data/juk-20.04.3/playermanager.h
Examining data/juk-20.04.3/filerenameroptions.h
Examining data/juk-20.04.3/playlistcollection.h
Examining data/juk-20.04.3/covericonview.cpp
Examining data/juk-20.04.3/coverinfo.cpp
Examining data/juk-20.04.3/scrobbler.cpp
Examining data/juk-20.04.3/statuslabel.cpp
Examining data/juk-20.04.3/scrobbleconfigdlg.h
Examining data/juk-20.04.3/juk.cpp
Examining data/juk-20.04.3/playlistsharedsettings.cpp
Examining data/juk-20.04.3/filehandle.cpp
Examining data/juk-20.04.3/cache.h
Examining data/juk-20.04.3/main.cpp
Examining data/juk-20.04.3/viewmode.cpp
Examining data/juk-20.04.3/playlistsplitter.cpp
Examining data/juk-20.04.3/dbuscollectionproxy.h
Examining data/juk-20.04.3/slider.cpp
Examining data/juk-20.04.3/scrobbleconfigdlg.cpp
Examining data/juk-20.04.3/exampleoptions.cpp
Examining data/juk-20.04.3/coverdialog.h
Examining data/juk-20.04.3/upcomingplaylist.h
Examining data/juk-20.04.3/searchwidget.cpp
Examining data/juk-20.04.3/statuslabel.h
Examining data/juk-20.04.3/playlistcollection.cpp
Examining data/juk-20.04.3/stringshare.h
Examining data/juk-20.04.3/mediafiles.cpp
Examining data/juk-20.04.3/upcomingplaylist.cpp
Examining data/juk-20.04.3/folderplaylist.cpp
Examining data/juk-20.04.3/playlistsearch.h
Examining data/juk-20.04.3/juk.h
Examining data/juk-20.04.3/volumepopupbutton.h
Examining data/juk-20.04.3/playlist.h
Examining data/juk-20.04.3/tagtransactionmanager.cpp
Examining data/juk-20.04.3/lyricswidget.cpp
Examining data/juk-20.04.3/tagtransactionmanager.h
Examining data/juk-20.04.3/playlistinterface.cpp
Examining data/juk-20.04.3/playlistbox.h
Examining data/juk-20.04.3/playlistitem.cpp
Examining data/juk-20.04.3/tagrenameroptions.cpp
Examining data/juk-20.04.3/covermanager.h
Examining data/juk-20.04.3/actioncollection.h
Examining data/juk-20.04.3/slideraction.cpp
Examining data/juk-20.04.3/deletedialog.cpp
Examining data/juk-20.04.3/svghandler.h
Examining data/juk-20.04.3/webimagefetcher.cpp
Examining data/juk-20.04.3/actioncollection.cpp
Examining data/juk-20.04.3/playermanager.cpp
Examining data/juk-20.04.3/keydialog.h
Examining data/juk-20.04.3/systemtray.h
Examining data/juk-20.04.3/filerenamerconfigdlg.h
Examining data/juk-20.04.3/filerenameroptions.cpp
Examining data/juk-20.04.3/webimagefetcher.h
Examining data/juk-20.04.3/slider.h
Examining data/juk-20.04.3/tracksequenceiterator.h
Examining data/juk-20.04.3/lyricswidget.h
Examining data/juk-20.04.3/dynamicplaylist.h
Examining data/juk-20.04.3/historyplaylist.h
Examining data/juk-20.04.3/coverinfo.h
Examining data/juk-20.04.3/tagguesser.h
Examining data/juk-20.04.3/scrobbler.h
Examining data/juk-20.04.3/juk-exception.h
Examining data/juk-20.04.3/dbuscollectionproxy.cpp
Examining data/juk-20.04.3/advancedsearchdialog.cpp
Examining data/juk-20.04.3/nowplaying.cpp
Examining data/juk-20.04.3/treeviewitemplaylist.h
Examining data/juk-20.04.3/coverproxy.h
Examining data/juk-20.04.3/nowplaying.h

FINAL RESULTS:

data/juk-20.04.3/playlist.cpp:240:8:  [3] (random) random:
  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.
    if(random && !m_history.isEmpty()) {
data/juk-20.04.3/tracksequenceiterator.cpp:80:40:  [3] (random) random:
  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.
        const int candidate = KRandom::random();
data/juk-20.04.3/tracksequenceiterator.cpp:195:8:  [3] (random) random:
  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.
    if(random || albumRandom) {
data/juk-20.04.3/tracksequenceiterator.cpp:202:38:  [3] (random) random:
  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.
            newItem = items[KRandom::random() % items.count()];
data/juk-20.04.3/tracksequenceiterator.cpp:243:24:  [3] (random) random:
  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.
    if((albumRandom || random) && current && m_randomItems.isEmpty()) {
data/juk-20.04.3/cache.cpp:134: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).
    if(!f.open(QIODevice::ReadOnly))
data/juk-20.04.3/cache.cpp:178: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).
    if(!f.open(QIODevice::WriteOnly)) {
data/juk-20.04.3/cache.cpp:265: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).
    if(!m_loadFile.open(QIODevice::ReadOnly))
data/juk-20.04.3/cache.cpp:293:26:  [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_loadFileBuffer.open(QIODevice::ReadOnly);
data/juk-20.04.3/collectionlist.cpp:240: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).
    if(!f.open(QIODevice::WriteOnly)) {
data/juk-20.04.3/coverinfo.cpp:269:26:  [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(!albumArtFile.open(QIODevice::ReadWrite)) {
data/juk-20.04.3/covermanager.cpp:197: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::WriteOnly)) {
data/juk-20.04.3/covermanager.cpp:231: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/juk-20.04.3/covermanager.cpp:413: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(!tempFile.open() || !large.save(tempFile.fileName(), "PNG")) {
data/juk-20.04.3/dbuscollectionproxy.cpp:51:19:  [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_collection->open(QStringList(file));
data/juk-20.04.3/dbuscollectionproxy.cpp:56:19:  [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_collection->open(files);
data/juk-20.04.3/dbuscollectionproxy.cpp:61:19:  [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_collection->open(playlist, QStringList(file));
data/juk-20.04.3/dbuscollectionproxy.cpp:66:19:  [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_collection->open(playlist, files);
data/juk-20.04.3/dbuscollectionproxy.cpp:142: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(!tempFile.open()) {
data/juk-20.04.3/jukIface.h:35:42:  [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 openFile(const QString &file) { open(QStringList(file)); }
data/juk-20.04.3/jukIface.h:36:47:  [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 openFile(const QStringList &files) { open(files); }
data/juk-20.04.3/jukIface.h:37:67:  [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 openFile(const QString &playlist, const QString &file) { open(playlist, QStringList(file)); }
data/juk-20.04.3/jukIface.h:38:72:  [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 openFile(const QString &playlist, const QStringList &files) { open(playlist, files); }
data/juk-20.04.3/jukIface.h:58: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).
    virtual void open(const QStringList &files) = 0;
data/juk-20.04.3/jukIface.h:59: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).
    virtual void open(const QString &playlist, const QStringList &files) = 0;
data/juk-20.04.3/playlist.cpp:272: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::WriteOnly))
data/juk-20.04.3/playlist.cpp:1426: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/juk-20.04.3/playlistcollection.cpp:333:26:  [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 PlaylistCollection::open(const QStringList &l)
data/juk-20.04.3/playlistcollection.cpp:365:26:  [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 PlaylistCollection::open(const QString &playlist, const QStringList &files)
data/juk-20.04.3/playlistcollection.cpp:397: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).
            open(m_folderList);
data/juk-20.04.3/playlistcollection.cpp:400: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).
            open(result.addedDirs);
data/juk-20.04.3/playlistcollection.cpp:931:22:  [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).
    KStandardAction::open(this, SLOT(slotOpen()), actions());
data/juk-20.04.3/playlistcollection.h:87: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).
    virtual void open(const QStringList &files = QStringList());
data/juk-20.04.3/playlistcollection.h:88: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).
    virtual void open(const QString &playlist, const QStringList &files);
data/juk-20.04.3/playlistcollection.h:247:45:  [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 slotOpen()         { m_collection->open(); }
data/juk-20.04.3/filehandle.cpp:91:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        read(s);
data/juk-20.04.3/filehandle.cpp:163:18:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void FileHandle::read(CacheDataStream &s)
data/juk-20.04.3/filehandle.cpp:219:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    f.read(s);
data/juk-20.04.3/filehandle.h:66:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(CacheDataStream &s);
data/juk-20.04.3/juktag.cpp:101:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
CacheDataStream &Tag::read(CacheDataStream &s)
data/juk-20.04.3/juktag.cpp:244:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    return t.read(s);
data/juk-20.04.3/juktag.h:81:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    CacheDataStream &read(CacheDataStream &s);
data/juk-20.04.3/playlist.cpp:934:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void Playlist::read(QDataStream &s)
data/juk-20.04.3/playlist.cpp:2081:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    p.read(s);
data/juk-20.04.3/playlist.h:323:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    void read(QDataStream &s);

ANALYSIS SUMMARY:

Hits = 45
Lines analyzed = 26765 in approximately 0.66 seconds (40568 lines/second)
Physical Source Lines of Code (SLOC) = 16364
Hits@level = [0]   0 [1]  10 [2]  30 [3]   5 [4]   0 [5]   0
Hits@level+ = [0+]  45 [1+]  45 [2+]  35 [3+]   5 [4+]   0 [5+]   0
Hits/KSLOC@level+ = [0+] 2.74994 [1+] 2.74994 [2+] 2.13884 [3+] 0.305549 [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.