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/purple-lurch-0.6.8+git20200527.388605/headers/jabber/adhoccommands.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/auth.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/auth_digest_md5.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/auth_scram.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/bosh.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/buddy.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/caps.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/chat.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/data.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/disco.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/facebook_roster.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/ibb.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/iq.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/jabber.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/jutil.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/message.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/namespaces.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/oob.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/parser.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/pep.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/ping.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/presence.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/roster.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/si.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/useravatar.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/usermood.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/usernick.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/usertune.h Examining data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/xdata.h Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch.h Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_api.c Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_api.h Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_cmd_ui.c Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_cmd_ui.h Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_util.c Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch_util.h Examining data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c Examining data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_util.c Examining data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_api.c FINAL RESULTS: data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:756:36: [3] (random) g_random_int: 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. rand_str = g_strdup_printf("%i", g_random_int()); data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/ibb.h:41:66: [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). const char *id, xmlnode *open); data/purple-lurch-0.6.8+git20200527.388605/headers/jabber/ibb.h:80: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). const gchar *from, const gchar *id, xmlnode *open, gpointer user_data); data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:1266:5: [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(temp_addr_p, &curr_addr, sizeof(lurch_addr)); data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:30: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). #define strnlen(a, b) (MIN(strlen(a), (b))) data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:1165: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). if (strncmp(purple_account_get_protocol_id(acc_p), JABBER_PROTOCOL_ID, strlen(JABBER_PROTOCOL_ID))) { data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:2096:108: [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(purple_account_get_protocol_id(purple_conversation_get_account(conv_p)), JABBER_PROTOCOL_ID, strlen(JABBER_PROTOCOL_ID))) { data/purple-lurch-0.6.8+git20200527.388605/src/lurch.c:2108:108: [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(purple_account_get_protocol_id(purple_conversation_get_account(conv_p)), JABBER_PROTOCOL_ID, strlen(JABBER_PROTOCOL_ID))) { data/purple-lurch-0.6.8+git20200527.388605/src/lurch_util.c:74:49: [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). ret_val = axc_context_set_db_fn(ctx_p, db_fn, strlen(db_fn)); data/purple-lurch-0.6.8+git20200527.388605/src/lurch_util.c:114:17: [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 (!uname || strlen(uname) == 0) { data/purple-lurch-0.6.8+git20200527.388605/src/lurch_util.c:143:14: [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 (!fp || strlen(fp) != 98) { data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_api.c:593:83: [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). axc_buf * mock_key_buf_4223 = axc_buf_create((unsigned char *) mock_key_4223, strlen(mock_key_4223)); data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_api.c:605:83: [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). axc_buf * mock_key_buf_1338 = axc_buf_create((unsigned char *) mock_key_1338, strlen(mock_key_1338)); data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_api.c:684:83: [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). axc_buf * mock_key_buf_4223 = axc_buf_create((unsigned char *) mock_key_4223, strlen(mock_key_4223)); data/purple-lurch-0.6.8+git20200527.388605/test/test_lurch_api.c:727:83: [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). axc_buf * mock_key_buf_4223 = axc_buf_create((unsigned char *) mock_key_4223, strlen(mock_key_4223)); ANALYSIS SUMMARY: Hits = 15 Lines analyzed = 7920 in approximately 0.24 seconds (32888 lines/second) Physical Source Lines of Code (SLOC) = 5097 Hits@level = [0] 0 [1] 11 [2] 3 [3] 1 [4] 0 [5] 0 Hits@level+ = [0+] 15 [1+] 15 [2+] 4 [3+] 1 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 2.94291 [1+] 2.94291 [2+] 0.784775 [3+] 0.196194 [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.