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/meanwhile-1.0.2/src/mw_srvc_ft.h Examining data/meanwhile-1.0.2/src/cipher.c Examining data/meanwhile-1.0.2/src/error.c Examining data/meanwhile-1.0.2/src/mw_util.c Examining data/meanwhile-1.0.2/src/mw_session.h Examining data/meanwhile-1.0.2/src/mw_cipher.h Examining data/meanwhile-1.0.2/src/mw_srvc_store.h Examining data/meanwhile-1.0.2/src/mw_srvc_im.h Examining data/meanwhile-1.0.2/src/mw_common.h Examining data/meanwhile-1.0.2/src/message.c Examining data/meanwhile-1.0.2/src/mw_debug.h Examining data/meanwhile-1.0.2/src/service.c Examining data/meanwhile-1.0.2/src/mw_srvc_aware.h Examining data/meanwhile-1.0.2/src/mw_channel.h Examining data/meanwhile-1.0.2/src/mw_error.h Examining data/meanwhile-1.0.2/src/mw_service.h Examining data/meanwhile-1.0.2/src/mpi/mpi.c Examining data/meanwhile-1.0.2/src/mpi/mpi-types.h Examining data/meanwhile-1.0.2/src/mpi/mpi.h Examining data/meanwhile-1.0.2/src/mpi/mpi-config.h Examining data/meanwhile-1.0.2/src/channel.c Examining data/meanwhile-1.0.2/src/mw_message.h Examining data/meanwhile-1.0.2/src/mw_srvc_conf.h Examining data/meanwhile-1.0.2/src/mw_srvc_dir.h Examining data/meanwhile-1.0.2/src/mw_srvc_place.h Examining data/meanwhile-1.0.2/src/mw_srvc_resolve.h Examining data/meanwhile-1.0.2/src/mw_st_list.h Examining data/meanwhile-1.0.2/src/mw_util.h Examining data/meanwhile-1.0.2/src/srvc_aware.c Examining data/meanwhile-1.0.2/src/srvc_conf.c Examining data/meanwhile-1.0.2/src/srvc_dir.c Examining data/meanwhile-1.0.2/src/srvc_im.c Examining data/meanwhile-1.0.2/src/srvc_resolve.c Examining data/meanwhile-1.0.2/src/srvc_store.c Examining data/meanwhile-1.0.2/src/st_list.c Examining data/meanwhile-1.0.2/src/srvc_ft.c Examining data/meanwhile-1.0.2/src/common.c Examining data/meanwhile-1.0.2/src/mw_debug.c Examining data/meanwhile-1.0.2/src/session.c Examining data/meanwhile-1.0.2/src/srvc_place.c Examining data/meanwhile-1.0.2/samples/socket.c Examining data/meanwhile-1.0.2/samples/sendmessage.c Examining data/meanwhile-1.0.2/samples/logging_proxy.c Examining data/meanwhile-1.0.2/samples/login_server.c Examining data/meanwhile-1.0.2/samples/nocipher_proxy.c Examining data/meanwhile-1.0.2/samples/redirect_server.c FINAL RESULTS: data/meanwhile-1.0.2/samples/logging_proxy.c:163:5: [4] (format) vfprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. vfprintf(stdout, txt, args); data/meanwhile-1.0.2/samples/logging_proxy.c:168:8: [4] (shell) popen: 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. fp = popen("hexdump -C", "w"); data/meanwhile-1.0.2/samples/logging_proxy.c:985:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, data/meanwhile-1.0.2/samples/login_server.c:52:8: [4] (shell) popen: 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. fp = popen("hexdump -C", "w"); data/meanwhile-1.0.2/samples/login_server.c:405:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, data/meanwhile-1.0.2/samples/nocipher_proxy.c:60:8: [4] (shell) popen: 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. fp = popen("hexdump -C", "w"); data/meanwhile-1.0.2/samples/nocipher_proxy.c:459:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, data/meanwhile-1.0.2/samples/redirect_server.c:349:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, data/meanwhile-1.0.2/samples/socket.c:283:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, HELP, *argv); data/meanwhile-1.0.2/src/mpi/mpi.c:20:20: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define DIAG(T,V) {fprintf(stderr,T);mw_mp_print(V,stderr);fputc('\n',stderr);} data/meanwhile-1.0.2/src/mpi/mpi.c:2254:5: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(ofp, DIGIT_FMT, DIGIT(mp, ix)); data/meanwhile-1.0.2/src/st_list.c:521:9: [4] (buffer) sscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. ret = sscanf(line, "G %s %s %c\n", data/meanwhile-1.0.2/src/st_list.c:561:9: [4] (buffer) sscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. ret = sscanf(line, "U %s %s", data/meanwhile-1.0.2/src/cipher.c:137:3: [3] (random) srand: 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. srand(time(NULL)); data/meanwhile-1.0.2/src/cipher.c:221:3: [3] (random) srand: 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. srand(time(NULL)); data/meanwhile-1.0.2/src/srvc_conf.c:111:3: [3] (random) srand: 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. srand(clock() + rand()); data/meanwhile-1.0.2/src/srvc_place.c:875:3: [3] (random) srand: 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. srand(clock() + rand()); data/meanwhile-1.0.2/samples/logging_proxy.c:655: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(s->buf+s->buf_recv, b, n); data/meanwhile-1.0.2/samples/logging_proxy.c:660: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(s->buf+s->buf_recv, b, x); data/meanwhile-1.0.2/samples/logging_proxy.c:673:2: [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(t, s->buf, 4); data/meanwhile-1.0.2/samples/logging_proxy.c:674:2: [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(t+4, b, n); data/meanwhile-1.0.2/samples/logging_proxy.c:707: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(s->buf, b, n); data/meanwhile-1.0.2/samples/logging_proxy.c:722: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(s->buf, b, n); data/meanwhile-1.0.2/samples/logging_proxy.c:973:19: [2] (integer) atoi: 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). client_port = atoi(z); data/meanwhile-1.0.2/samples/logging_proxy.c:977:19: [2] (integer) atoi: 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). server_port = atoi(z); data/meanwhile-1.0.2/samples/logging_proxy.c:981:15: [2] (integer) atoi: 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). counter = atoi(argv[2]); data/meanwhile-1.0.2/samples/login_server.c:201: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(sbuf + sbuf_recv, b, n); data/meanwhile-1.0.2/samples/login_server.c:206: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(sbuf + sbuf_recv, b, x); data/meanwhile-1.0.2/samples/login_server.c:219:2: [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(t, sbuf, 4); data/meanwhile-1.0.2/samples/login_server.c:220:2: [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(t+4, b, n); data/meanwhile-1.0.2/samples/login_server.c:253: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(sbuf, b, n); data/meanwhile-1.0.2/samples/login_server.c:268: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(sbuf, b, n); data/meanwhile-1.0.2/samples/login_server.c:401:12: [2] (integer) atoi: 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). port = atoi(argv[1]); data/meanwhile-1.0.2/samples/nocipher_proxy.c:173: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(s->buf+s->buf_recv, b, n); data/meanwhile-1.0.2/samples/nocipher_proxy.c:178: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(s->buf+s->buf_recv, b, x); data/meanwhile-1.0.2/samples/nocipher_proxy.c:191:2: [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(t, s->buf, 4); data/meanwhile-1.0.2/samples/nocipher_proxy.c:192:2: [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(t+4, b, n); data/meanwhile-1.0.2/samples/nocipher_proxy.c:225: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(s->buf, b, n); data/meanwhile-1.0.2/samples/nocipher_proxy.c:240: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(s->buf, b, n); data/meanwhile-1.0.2/samples/nocipher_proxy.c:451:19: [2] (integer) atoi: 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). client_port = atoi(z); data/meanwhile-1.0.2/samples/nocipher_proxy.c:455:19: [2] (integer) atoi: 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). server_port = atoi(z); data/meanwhile-1.0.2/samples/redirect_server.c:143: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(sbuf + sbuf_recv, b, n); data/meanwhile-1.0.2/samples/redirect_server.c:148: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(sbuf + sbuf_recv, b, x); data/meanwhile-1.0.2/samples/redirect_server.c:161:2: [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(t, sbuf, 4); data/meanwhile-1.0.2/samples/redirect_server.c:162:2: [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(t+4, b, n); data/meanwhile-1.0.2/samples/redirect_server.c:195: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(sbuf, b, n); data/meanwhile-1.0.2/samples/redirect_server.c:210: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(sbuf, b, n); data/meanwhile-1.0.2/samples/redirect_server.c:345:12: [2] (integer) atoi: 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). port = atoi(z); data/meanwhile-1.0.2/samples/sendmessage.c:326:12: [2] (integer) atoi: 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). portno = atoi(argv[2]); data/meanwhile-1.0.2/src/common.c:98:7: [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(buf, b->buf, use); data/meanwhile-1.0.2/src/common.c:134:3: [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(b->ptr, data, len); data/meanwhile-1.0.2/src/common.c:193:3: [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(data, b->ptr, len); data/meanwhile-1.0.2/src/common.c:364: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(b->ptr, val, len); data/meanwhile-1.0.2/src/common.c:386: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(*val, b->ptr, len); data/meanwhile-1.0.2/src/common.c:411: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(b->ptr, o->data, len); data/meanwhile-1.0.2/src/error.c:28:10: [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. static char b[11]; /* 0x12345678 + NULL terminator */ data/meanwhile-1.0.2/src/error.c:29:3: [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((char *) b, "0x%08x", code); data/meanwhile-1.0.2/src/mpi/mpi.c:153:40: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. #define s_mw_mp_copy(sp, dp, count) memcpy(dp, sp, (count) * sizeof(mw_mp_digit)) data/meanwhile-1.0.2/src/mpi/mpi.c:2745:3: [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(dp, sp, count * sizeof(mw_mp_digit)); data/meanwhile-1.0.2/src/mw_st_list.h:158: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). void mwSametimeGroup_setOpen(struct mwSametimeGroup *g, gboolean open); data/meanwhile-1.0.2/src/session.c:705: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(s->buf+s->buf_used, b, n); data/meanwhile-1.0.2/src/session.c:711: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(s->buf+s->buf_used, b, x); data/meanwhile-1.0.2/src/session.c:730:2: [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(t, s->buf, 4); data/meanwhile-1.0.2/src/session.c:731:2: [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(t+4, b, n); data/meanwhile-1.0.2/src/session.c:774: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(s->buf, b, n); data/meanwhile-1.0.2/src/session.c:795: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(s->buf, b, n); data/meanwhile-1.0.2/src/st_list.c:45:12: [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). gboolean open; data/meanwhile-1.0.2/src/st_list.c:226: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). void mwSametimeGroup_setOpen(struct mwSametimeGroup *g, gboolean open) { data/meanwhile-1.0.2/src/st_list.c:228: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). g->open = open; data/meanwhile-1.0.2/src/st_list.c:234: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). return g->open; data/meanwhile-1.0.2/src/st_list.c:436:28: [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). name, type, alias, (g->open? 'O':'C')); data/meanwhile-1.0.2/src/st_list.c:522: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). name, alias, &open); data/meanwhile-1.0.2/samples/logging_proxy.c:775:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(side->sock, buf, 2048); data/meanwhile-1.0.2/samples/login_server.c:317:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(sock, buf, 2048); data/meanwhile-1.0.2/samples/nocipher_proxy.c:291:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(side->sock, buf, 2048); data/meanwhile-1.0.2/samples/redirect_server.c:259:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(sock, buf, 2048); data/meanwhile-1.0.2/samples/sendmessage.c:215:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(sock, buf, BUF_LEN); data/meanwhile-1.0.2/samples/socket.c:187:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read(sock, buf, BUF_LEN); data/meanwhile-1.0.2/src/common.c:358: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(val) len = strlen(val); data/meanwhile-1.0.2/src/session.c:349:11: [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). z.len = strlen(pass); data/meanwhile-1.0.2/src/srvc_aware.c:426: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). g_return_val_if_fail(strlen(id->user) > 0, FALSE); data/meanwhile-1.0.2/src/srvc_conf.c:725:18: [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). info.len = strlen(text); data/meanwhile-1.0.2/src/srvc_im.c:854: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). len = strlen(buf); data/meanwhile-1.0.2/src/srvc_im.c:912:11: [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). o.len = strlen(subject); data/meanwhile-1.0.2/src/srvc_im.c:922:11: [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). o.len = strlen(html); data/meanwhile-1.0.2/src/srvc_im.c:936:11: [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). o.len = strlen(mime); data/meanwhile-1.0.2/src/st_list.c:517: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). ret = strlen(line); data/meanwhile-1.0.2/src/st_list.c:532:13: [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 l = strlen(name)-1; data/meanwhile-1.0.2/src/st_list.c:557: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). ret = strlen(line); ANALYSIS SUMMARY: Hits = 89 Lines analyzed = 24678 in approximately 0.56 seconds (43695 lines/second) Physical Source Lines of Code (SLOC) = 13873 Hits@level = [0] 52 [1] 17 [2] 55 [3] 4 [4] 13 [5] 0 Hits@level+ = [0+] 141 [1+] 89 [2+] 72 [3+] 17 [4+] 13 [5+] 0 Hits/KSLOC@level+ = [0+] 10.1636 [1+] 6.41534 [2+] 5.18994 [3+] 1.2254 [4+] 0.937072 [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.