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/kcm-fcitx5-5.0.0/layout/deadmapdata.h Examining data/kcm-fcitx5-5.0.0/layout/keyboardlayoutwidget.cpp Examining data/kcm-fcitx5-5.0.0/layout/keyboardlayoutwidget.h Examining data/kcm-fcitx5-5.0.0/layout/main.cpp Examining data/kcm-fcitx5-5.0.0/src/configtool/main.cpp Examining data/kcm-fcitx5-5.0.0/src/configtool/mainwindow.cpp Examining data/kcm-fcitx5-5.0.0/src/configtool/mainwindow.h Examining data/kcm-fcitx5-5.0.0/src/kcm/main.cpp Examining data/kcm-fcitx5-5.0.0/src/kcm/main.h Examining data/kcm-fcitx5-5.0.0/src/kcm/qtkeytrans.cpp Examining data/kcm-fcitx5-5.0.0/src/kcm/qtkeytrans.h Examining data/kcm-fcitx5-5.0.0/src/kcm/qtkeytransdata.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/addonmodel.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/addonmodel.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/dbusprovider.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/dbusprovider.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/font.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/font.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/imconfig.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/imconfig.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/iso639.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/iso639.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/layoutmodel.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/layoutmodel.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/layoutprovider.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/layoutprovider.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/logging.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/logging.h Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/model.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configlib/model.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/addonselector.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/addonselector.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/categoryhelper.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/categoryhelper.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/configwidget.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/configwidget.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/erroroverlay.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/erroroverlay.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/fontbutton.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/fontbutton.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/i18nhelper.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/impage.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/impage.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/keylistwidget.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/keylistwidget.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/layoutselector.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/layoutselector.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/listoptionwidget.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/listoptionwidget.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/optionwidget.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/optionwidget.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/varianthelper.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/varianthelper.h Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/verticalscrollarea.cpp Examining data/kcm-fcitx5-5.0.0/src/lib/configwidgetslib/verticalscrollarea.h Examining data/kcm-fcitx5-5.0.0/src/migrator/app/main.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/app/mainwindow.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/app/mainwindow.h Examining data/kcm-fcitx5-5.0.0/src/migrator/app/progresspage.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/app/progresspage.h Examining data/kcm-fcitx5-5.0.0/src/migrator/app/taskpage.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/app/taskpage.h Examining data/kcm-fcitx5-5.0.0/src/migrator/app/welcomepage.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/app/welcomepage.h Examining data/kcm-fcitx5-5.0.0/src/migrator/global/globalconfigmigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/global/globalconfigmigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/kkc/kkcmigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/kkc/kkcmigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/callbackrunner.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/callbackrunner.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/configmigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/configmigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/copydirectory.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/copydirectory.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/dbuscaller.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/dbuscaller.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/dbuswatcher.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/dbuswatcher.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/log.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/log.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migratorfactory.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migratorfactory.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migratorfactory_p.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migratorfactoryplugin.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/migratorfactoryplugin.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/pipeline.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/pipeline.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/pipelinejob.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/pipelinejob.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/processrunner.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/processrunner.h Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/renamefile.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/lib/renamefile.h Examining data/kcm-fcitx5-5.0.0/src/migrator/pinyin/pinyinmigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/pinyin/pinyinmigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/rime/rimemigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/rime/rimemigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/skk/skkmigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/skk/skkmigrator.h Examining data/kcm-fcitx5-5.0.0/src/migrator/table/tablemigrator.cpp Examining data/kcm-fcitx5-5.0.0/src/migrator/table/tablemigrator.h FINAL RESULTS: data/kcm-fcitx5-5.0.0/src/lib/configlib/iso639.cpp:21: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/kcm-fcitx5-5.0.0/src/migrator/kkc/kkcmigrator.cpp:64: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). file.open(ruleFile.fd(), QIODevice::ReadOnly)) { data/kcm-fcitx5-5.0.0/src/migrator/lib/copydirectory.cpp:53: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 buffer[4096]; data/kcm-fcitx5-5.0.0/src/migrator/lib/copydirectory.cpp:105: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). if (!from.open(QIODevice::ReadOnly)) { data/kcm-fcitx5-5.0.0/src/migrator/lib/copydirectory.cpp:108:17: [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 (!to.open(QIODevice::WriteOnly)) { data/kcm-fcitx5-5.0.0/src/migrator/skk/skkmigrator.cpp:64: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). file.open(ruleFile.fd(), QIODevice::ReadOnly)) { ANALYSIS SUMMARY: Hits = 6 Lines analyzed = 11888 in approximately 0.35 seconds (34456 lines/second) Physical Source Lines of Code (SLOC) = 9566 Hits@level = [0] 0 [1] 0 [2] 6 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 6 [1+] 6 [2+] 6 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 0.627221 [1+] 0.627221 [2+] 0.627221 [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.