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/qstardict-1.3/config.tests/kde/main.cpp Examining data/qstardict-1.3/kdeplasma/applet/dict.cpp Examining data/qstardict-1.3/kdeplasma/applet/dict.h Examining data/qstardict-1.3/kdeplasma/dataengine/dictengine.h Examining data/qstardict-1.3/kdeplasma/dataengine/dictengine.cpp Examining data/qstardict-1.3/plugins/baseplugin.h Examining data/qstardict-1.3/plugins/kdeintegration/kdeintegration.cpp Examining data/qstardict-1.3/plugins/kdeintegration/kdeintegration.h Examining data/qstardict-1.3/plugins/multitran/multitran.cpp Examining data/qstardict-1.3/plugins/multitran/multitran.h Examining data/qstardict-1.3/plugins/pluginserver.h Examining data/qstardict-1.3/plugins/stardict/dictziplib.cpp Examining data/qstardict-1.3/plugins/stardict/dictziplib.hpp Examining data/qstardict-1.3/plugins/stardict/distance.h Examining data/qstardict-1.3/plugins/stardict/file.hpp Examining data/qstardict-1.3/plugins/stardict/lib.cpp Examining data/qstardict-1.3/plugins/stardict/lib.h Examining data/qstardict-1.3/plugins/stardict/mapfile.hpp Examining data/qstardict-1.3/plugins/stardict/settingsdialog.cpp Examining data/qstardict-1.3/plugins/stardict/settingsdialog.h Examining data/qstardict-1.3/plugins/stardict/stardict.h Examining data/qstardict-1.3/plugins/stardict/distance.cpp Examining data/qstardict-1.3/plugins/stardict/stardict.cpp Examining data/qstardict-1.3/plugins/swac/swac.cpp Examining data/qstardict-1.3/plugins/swac/swac.h Examining data/qstardict-1.3/plugins/trayplugin.h Examining data/qstardict-1.3/plugins/web/settingsdialog.cpp Examining data/qstardict-1.3/plugins/web/settingsdialog.h Examining data/qstardict-1.3/plugins/web/web.cpp Examining data/qstardict-1.3/plugins/web/web.h Examining data/qstardict-1.3/plugins/anki/anki.cpp Examining data/qstardict-1.3/plugins/anki/anki.h Examining data/qstardict-1.3/plugins/anki/settingsdialog.cpp Examining data/qstardict-1.3/plugins/anki/settingsdialog.h Examining data/qstardict-1.3/plugins/toolbarplugin.h Examining data/qstardict-1.3/plugins/dictplugin.h Examining data/qstardict-1.3/plugins/metadata.h Examining data/qstardict-1.3/qstardict/appinfo.h Examining data/qstardict-1.3/qstardict/application.h Examining data/qstardict-1.3/qstardict/cssedit.cpp Examining data/qstardict-1.3/qstardict/cssedit.h Examining data/qstardict-1.3/qstardict/dbusadaptor.cpp Examining data/qstardict-1.3/qstardict/dbusadaptor.h Examining data/qstardict-1.3/qstardict/dictbrowser.cpp Examining data/qstardict-1.3/qstardict/dictbrowser.h Examining data/qstardict-1.3/qstardict/dictbrowsersearch.cpp Examining data/qstardict-1.3/qstardict/dictbrowsersearch.h Examining data/qstardict-1.3/qstardict/dictcore.cpp Examining data/qstardict-1.3/qstardict/dictcore.h Examining data/qstardict-1.3/qstardict/keyboard.cpp Examining data/qstardict-1.3/qstardict/keyboard.h Examining data/qstardict-1.3/qstardict/main.cpp Examining data/qstardict-1.3/qstardict/mainwindow.cpp Examining data/qstardict-1.3/qstardict/pluginsmodel.cpp Examining data/qstardict-1.3/qstardict/pluginsmodel.h Examining data/qstardict-1.3/qstardict/pluginsview.cpp Examining data/qstardict-1.3/qstardict/pluginsview.h Examining data/qstardict-1.3/qstardict/popupwindow.cpp Examining data/qstardict-1.3/qstardict/resizablepopup.cpp Examining data/qstardict-1.3/qstardict/resizablepopup.h Examining data/qstardict-1.3/qstardict/selection.cpp Examining data/qstardict-1.3/qstardict/selection.h Examining data/qstardict-1.3/qstardict/settingsdialog.h Examining data/qstardict-1.3/qstardict/speaker.cpp Examining data/qstardict-1.3/qstardict/speaker.h Examining data/qstardict-1.3/qstardict/trayicon.cpp Examining data/qstardict-1.3/qstardict/trayicon.h Examining data/qstardict-1.3/qstardict/util.cpp Examining data/qstardict-1.3/qstardict/util.h Examining data/qstardict-1.3/qstardict/appinfo.cpp Examining data/qstardict-1.3/qstardict/application.cpp Examining data/qstardict-1.3/qstardict/dictwidget.cpp Examining data/qstardict-1.3/qstardict/dictwidget.h Examining data/qstardict-1.3/qstardict/mainwindow.h Examining data/qstardict-1.3/qstardict/pluginmanager.cpp Examining data/qstardict-1.3/qstardict/pluginmanager.h Examining data/qstardict-1.3/qstardict/popupwindow.h Examining data/qstardict-1.3/qstardict/settingsdialog.cpp Examining data/qstardict-1.3/qxt/qxtglobal.cpp Examining data/qstardict-1.3/qxt/qxtglobal.h Examining data/qstardict-1.3/qxt/qxtglobalshortcut.cpp Examining data/qstardict-1.3/qxt/qxtglobalshortcut.h Examining data/qstardict-1.3/qxt/qxtglobalshortcut_mac.cpp Examining data/qstardict-1.3/qxt/qxtglobalshortcut_p.h Examining data/qstardict-1.3/qxt/qxtglobalshortcut_win.cpp Examining data/qstardict-1.3/qxt/qxtglobalshortcut_x11.cpp FINAL RESULTS: data/qstardict-1.3/plugins/stardict/lib.cpp:1284:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1307:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1357:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1436:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1459:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1508:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1535:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1562:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1585:17: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(sNewWord, sWord); data/qstardict-1.3/qstardict/appinfo.cpp:136:10: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. QDir system(systemAppPluginsDir()); data/qstardict-1.3/qstardict/appinfo.cpp:137:18: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. if (local == system) { data/qstardict-1.3/qstardict/application.cpp:57:48: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. m_translator->load("qstardict-" + QLocale::system().name(), binPath + "/../i18n/"); data/qstardict-1.3/qstardict/application.cpp:59:48: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. m_translator->load("qstardict-" + QLocale::system().name(), QSTARDICT_TRANSLATIONS_DIR); data/qstardict-1.3/qstardict/application.cpp:63:43: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. m_qtTranslator->load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:127: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[BUFFERSIZE]; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:137:17: [2] (misc) fopen: 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 (!(str = fopen(fname.c_str(), "rb"))) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:298: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). bool dictData::open(const std::string& fname, int computeCRC) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:324: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 ((fd = ::open(fname.c_str(), O_RDONLY )) < 0) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:339: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 (!mapfile.open(fname.c_str(), size)) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:388: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 outBuffer[OUT_BUFFER_SIZE]; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:413:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( buffer, this->start + start, size ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:486:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( outBuffer, this->start + this->offsets[i], this->chunks[i] ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:512:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( pt, inBuffer + firstOffset, lastOffset - firstOffset); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:523:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( pt, inBuffer + firstOffset, data/qstardict-1.3/plugins/stardict/dictziplib.cpp:530:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( pt, inBuffer, lastOffset ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:536:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( pt, inBuffer, this->chunkLength ); data/qstardict-1.3/plugins/stardict/dictziplib.hpp:25: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). bool open(const std::string& filename, int computeCRC); data/qstardict-1.3/plugins/stardict/lib.cpp:83:17: [2] (integer) atol: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). wordcount = atol(tmpstr); data/qstardict-1.3/plugins/stardict/lib.cpp:97:27: [2] (integer) atol: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). index_file_size = atol(tmpstr); data/qstardict-1.3/plugins/stardict/lib.cpp:113:27: [2] (integer) atol: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). index_file_size = atol(tmpstr); data/qstardict-1.3/plugins/stardict/lib.cpp:259:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:267:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:281:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:299:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:307:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:314:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:318:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(p1, p2, sec_size); data/qstardict-1.3/plugins/stardict/lib.cpp:608: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 (!mf.open(it->c_str(), cachestat.st_size)) data/qstardict-1.3/plugins/stardict/lib.cpp:649:21: [2] (misc) fopen: 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 *out = fopen(it->c_str(), "wb"); data/qstardict-1.3/plugins/stardict/lib.cpp:671:23: [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 (!map_file.open(url.c_str(), fsize)) data/qstardict-1.3/plugins/stardict/lib.cpp:693:21: [2] (misc) fopen: 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 (!(idxfile = fopen(url.c_str(), "rb"))) data/qstardict-1.3/plugins/stardict/lib.cpp:923: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 (!dictdzfile->open(fullfilename, 0)) data/qstardict-1.3/plugins/stardict/lib.cpp:932:20: [2] (misc) fopen: 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). dictfile = fopen(fullfilename.c_str(), "rb"); data/qstardict-1.3/plugins/stardict/mapfile.hpp:32: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). bool open(const char *file_name, unsigned long file_size); data/qstardict-1.3/plugins/stardict/mapfile.hpp:50: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). inline bool MapFile::open(const char *file_name, unsigned long file_size) data/qstardict-1.3/plugins/stardict/mapfile.hpp:55: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). if ((mmap_fd = ::open(file_name, O_RDONLY)) < 0) data/qstardict-1.3/plugins/swac/swac.cpp:38: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). db->open(); data/qstardict-1.3/qstardict/appinfo.cpp:21:5: [2] (buffer) wchar_t: 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. wchar_t path[MAX_PATH]; data/qstardict-1.3/qstardict/dictwidget.cpp:177: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 (! outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) data/qstardict-1.3/qstardict/selection.cpp:33: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 szWindowText[256]; data/qstardict-1.3/qstardict/settingsdialog.cpp:91: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 (desktop.open(QIODevice::ReadOnly) && QString(desktop.readAll()) data/qstardict-1.3/qstardict/settingsdialog.cpp:184:21: [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 (desktopFile.open(QIODevice::ReadOnly)) { data/qstardict-1.3/qstardict/settingsdialog.cpp:189: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 (f.open(QIODevice::WriteOnly | QIODevice::Text)) { data/qstardict-1.3/plugins/stardict/dictziplib.cpp:146:11: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). id1 = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:147:11: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). id2 = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:173:20: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->method = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:174:19: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->flags = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:175:19: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->mtime = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:176:20: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->mtime |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:177:20: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->mtime |= getc( str ) << 16; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:178:20: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->mtime |= getc( str ) << 24; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:179:24: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->extraFlags = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:180:16: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->os = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:184:23: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). extraLength = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:185:24: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). extraLength |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:187:15: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). si1 = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:188:15: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). si2 = getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:192:25: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). subLength = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:193:26: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). subLength |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:194:29: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->version = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:195:30: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->version |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:204:33: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunkLength = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:205:34: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunkLength |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:206:32: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunkCount = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:207:33: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunkCount |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:218:35: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunks[i] = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:219:36: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->chunks[i] |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:232:21: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while ((c = getc( str )) && c != EOF) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:247:21: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while ((c = getc( str )) && c != EOF) data/qstardict-1.3/plugins/stardict/dictziplib.cpp:260:9: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:261:9: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). getc( str ); data/qstardict-1.3/plugins/stardict/dictziplib.cpp:273:17: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->crc = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:274:18: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->crc |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:275:18: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->crc |= getc( str ) << 16; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:276:18: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->crc |= getc( str ) << 24; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:277:20: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->length = getc( str ) << 0; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:278:21: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->length |= getc( str ) << 8; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:279:21: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->length |= getc( str ) << 16; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:280:21: [1] (buffer) getc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). this->length |= getc( str ) << 24; data/qstardict-1.3/plugins/stardict/dictziplib.cpp:382:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void dictData::read(char *buffer, unsigned long start, unsigned long size) data/qstardict-1.3/plugins/stardict/dictziplib.hpp:27:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void read(char *buffer, unsigned long start, unsigned long size); data/qstardict-1.3/plugins/stardict/distance.cpp:174:9: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). n = strlen(s); data/qstardict-1.3/plugins/stardict/distance.cpp:175:9: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). m = strlen(t); data/qstardict-1.3/plugins/stardict/lib.cpp:71:19: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). p1 = buffer + strlen(magic_data) - 1; data/qstardict-1.3/plugins/stardict/lib.cpp:211:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). dictdzfile->read(origin_data, idxitem_offset, idxitem_size); data/qstardict-1.3/plugins/stardict/lib.cpp:258:28: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p2) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:279:32: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p2) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:333:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). dictdzfile->read(data + sizeof(guint32), idxitem_offset, idxitem_size); data/qstardict-1.3/plugins/stardict/lib.cpp:365:21: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). dictdzfile->read(origin_data, idxitem_offset, idxitem_size); data/qstardict-1.3/plugins/stardict/lib.cpp:392:28: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:403:32: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:452:28: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:463:32: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). sec_size = strlen(p) + 1; data/qstardict-1.3/plugins/stardict/lib.cpp:554:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). len = strlen(p); data/qstardict-1.3/plugins/stardict/lib.cpp:610:46: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strncmp(mf.begin(), CACHE_MAGIC, strlen(CACHE_MAGIC)) != 0) data/qstardict-1.3/plugins/stardict/lib.cpp:612:45: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). memcpy(&wordoffset[0], mf.begin() + strlen(CACHE_MAGIC), wordoffset.size()*sizeof(wordoffset[0])); data/qstardict-1.3/plugins/stardict/lib.cpp:652:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (fwrite(CACHE_MAGIC, 1, strlen(CACHE_MAGIC), out) != strlen(CACHE_MAGIC)) data/qstardict-1.3/plugins/stardict/lib.cpp:652:65: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (fwrite(CACHE_MAGIC, 1, strlen(CACHE_MAGIC), out) != strlen(CACHE_MAGIC)) data/qstardict-1.3/plugins/stardict/lib.cpp:680:26: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). index_size = strlen(p1) + 1 + 2 * sizeof(guint32); data/qstardict-1.3/plugins/stardict/lib.cpp:844:15: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). p1 += strlen(p1) + 1 + 2 * sizeof(guint32); data/qstardict-1.3/plugins/stardict/lib.cpp:858:33: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). gchar *p1 = wordlist[idx] + strlen(wordlist[idx]) + sizeof(gchar); data/qstardict-1.3/plugins/stardict/lib.cpp:1273:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int iWordLen = strlen(sWord); data/qstardict-1.3/plugins/stardict/lib.cpp:1400:25: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "E"); // add a char "E" data/qstardict-1.3/plugins/stardict/lib.cpp:1402:25: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "e"); // add a char "e" data/qstardict-1.3/plugins/stardict/lib.cpp:1511:21: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "Y"); // add a char "Y" data/qstardict-1.3/plugins/stardict/lib.cpp:1513:21: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "y"); // add a char "y" data/qstardict-1.3/plugins/stardict/lib.cpp:1538:21: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "Y"); // add a char "Y" data/qstardict-1.3/plugins/stardict/lib.cpp:1540:21: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat(sNewWord, "y"); // add a char "y" data/qstardict-1.3/plugins/stardict/stardict.cpp:288:12: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). ptr += strlen(ptr) + 1; ANALYSIS SUMMARY: Hits = 119 Lines analyzed = 13962 in approximately 0.36 seconds (38724 lines/second) Physical Source Lines of Code (SLOC) = 9592 Hits@level = [0] 8 [1] 66 [2] 39 [3] 0 [4] 14 [5] 0 Hits@level+ = [0+] 127 [1+] 119 [2+] 53 [3+] 14 [4+] 14 [5+] 0 Hits/KSLOC@level+ = [0+] 13.2402 [1+] 12.4062 [2+] 5.52544 [3+] 1.45955 [4+] 1.45955 [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.