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/wxsqlite3-3.4.1~dfsg/include/wx/wxsqlite3.h Examining data/wxsqlite3-3.4.1~dfsg/include/wx/wxsqlite3def.h Examining data/wxsqlite3-3.4.1~dfsg/include/wx/wxsqlite3dyn.h Examining data/wxsqlite3-3.4.1~dfsg/include/wx/wxsqlite3opt.h Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/foldertree.cpp Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/foldertree.h Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/projectlist.cpp Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/projectlist.h Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/treeviewapp.cpp Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/treeviewapp.h Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/treeviewsample.cpp Examining data/wxsqlite3-3.4.1~dfsg/samples/treeview/treeviewsample.h Examining data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp Examining data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp FINAL RESULTS: data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:5197:5: [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(pCharArray->a[j], zValue); data/wxsqlite3-3.4.1~dfsg/include/wx/wxsqlite3.h:2732:49: [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. static bool Randomness(int n, wxMemoryBuffer& random); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:4186:59: [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. bool wxSQLite3Database::Randomness(int n, wxMemoryBuffer& random) data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:4192:20: [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. void* buffer = random.GetWriteBuf(n); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:4194:5: [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. random.UngetWriteBuf(n); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:4199:15: [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. wxUnusedVar(random); data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:449:7: [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 buf[128]; data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:450:7: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "insert into emp values (%d, 'empname%06d', %d.50);", i, i, i); data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:499:7: [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 buf[128]; data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:500:7: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "insert into emp (empname,salary) values ('empname%06d',%d.57);", i+1,(i+1)*10000); data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:622:14: [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. unsigned char bin[256]; data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:666:7: [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 buf[16]; data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:667:7: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(buf, "EmpName%06d", i); data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:736: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). memBuffer.AppendData(myData, strlen(myData)+1); data/wxsqlite3-3.4.1~dfsg/samples/minimal.cpp:740:37: [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). incBlob.Read(memBuffer, (int) strlen(myData)+1, 12); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:2692:44: [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). binaryKey.AppendData((void*) localKey, strlen(localKey)); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:2820:44: [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). binaryKey.AppendData((void*) localKey, strlen(localKey)); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:2931:44: [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). binaryKey.AppendData((void*) localKey, strlen(localKey)); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:3888:50: [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). binaryNewKey.AppendData((void*) localNewKey, strlen(localNewKey)); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:3922:80: [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 rc = sqlite3_user_authenticate(m_db->m_db, localUsername, localPassword, strlen(localPassword)); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:3946:71: [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 rc = sqlite3_user_add(m_db->m_db, localUsername, localPassword, strlen(localPassword), nIsAdmin); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:3971:74: [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 rc = sqlite3_user_change(m_db->m_db, localUsername, localPassword, strlen(localPassword), nIsAdmin); data/wxsqlite3-3.4.1~dfsg/src/wxsqlite3.cpp:5195:16: [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). size_t k = strlen(zValue) + 1; ANALYSIS SUMMARY: Hits = 23 Lines analyzed = 12578 in approximately 0.36 seconds (35173 lines/second) Physical Source Lines of Code (SLOC) = 8111 Hits@level = [0] 0 [1] 10 [2] 7 [3] 5 [4] 1 [5] 0 Hits@level+ = [0+] 23 [1+] 23 [2+] 13 [3+] 6 [4+] 1 [5+] 0 Hits/KSLOC@level+ = [0+] 2.83566 [1+] 2.83566 [2+] 1.60276 [3+] 0.739736 [4+] 0.123289 [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.