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/darkstat-3.0.719/cap.c Examining data/darkstat-3.0.719/acct.h Examining data/darkstat-3.0.719/addr.h Examining data/darkstat-3.0.719/daylog.h Examining data/darkstat-3.0.719/decode.h Examining data/darkstat-3.0.719/localip.c Examining data/darkstat-3.0.719/static/c-ify.c Examining data/darkstat-3.0.719/err.h Examining data/darkstat-3.0.719/acct.c Examining data/darkstat-3.0.719/stylecss.h Examining data/darkstat-3.0.719/decode.c Examining data/darkstat-3.0.719/opt.h Examining data/darkstat-3.0.719/http.c Examining data/darkstat-3.0.719/addr.c Examining data/darkstat-3.0.719/graph_db.c Examining data/darkstat-3.0.719/conv.c Examining data/darkstat-3.0.719/hosts_db.h Examining data/darkstat-3.0.719/str.h Examining data/darkstat-3.0.719/hosts_sort.c Examining data/darkstat-3.0.719/pidfile.c Examining data/darkstat-3.0.719/conv.h Examining data/darkstat-3.0.719/hosts_db.c Examining data/darkstat-3.0.719/queue.h Examining data/darkstat-3.0.719/ncache.h Examining data/darkstat-3.0.719/localip.h Examining data/darkstat-3.0.719/str.c Examining data/darkstat-3.0.719/tree.h Examining data/darkstat-3.0.719/cdefs.h Examining data/darkstat-3.0.719/now.c Examining data/darkstat-3.0.719/html.c Examining data/darkstat-3.0.719/db.h Examining data/darkstat-3.0.719/graph_db.h Examining data/darkstat-3.0.719/bsd.c Examining data/darkstat-3.0.719/now.h Examining data/darkstat-3.0.719/dns.c Examining data/darkstat-3.0.719/darkstat.c Examining data/darkstat-3.0.719/err.c Examining data/darkstat-3.0.719/dns.h Examining data/darkstat-3.0.719/graphjs.h Examining data/darkstat-3.0.719/daylog.c Examining data/darkstat-3.0.719/db.c Examining data/darkstat-3.0.719/html.h Examining data/darkstat-3.0.719/pidfile.h Examining data/darkstat-3.0.719/ncache.c Examining data/darkstat-3.0.719/cap.h Examining data/darkstat-3.0.719/bsd.h Examining data/darkstat-3.0.719/http.h FINAL RESULTS: data/darkstat-3.0.719/pidfile.c:59:8: [5] (race) chown: This accepts filename arguments; if an attacker can move those files, a race condition results. (CWE-362). Use fchown( ) instead. if (chown(filename, pw->pw_uid, pw->pw_gid) == -1) data/darkstat-3.0.719/darkstat.c:232:4: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. printf(PACKAGE_STRING " (using %s)\n", pcap_lib_version()); data/darkstat-3.0.719/err.c:48:4: [4] (format) vsnprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. vsnprintf(buf+pos, sizeof(buf)-pos, format, va); data/darkstat-3.0.719/err.c:66:7: [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(stderr, format, va); data/darkstat-3.0.719/err.c:84:7: [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(stderr, format, va); data/darkstat-3.0.719/err.c:102:7: [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(stderr, format, va); data/darkstat-3.0.719/err.c:118:7: [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(stderr, format, va); data/darkstat-3.0.719/err.c:183:7: [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(stderr, format, va); data/darkstat-3.0.719/conv.c:310:11: [3] (misc) chroot: chroot can be very helpful, but is hard to use correctly (CWE-250, CWE-22). Make sure the program immediately chdir("/"), closes file descriptors, and drops root privileges, and that all necessary files (and no more!) are in the new root. if (chroot(chroot_dir) == -1) data/darkstat-3.0.719/acct.c:202: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(hs->u.host.mac_addr, sm->src_mac, sizeof(sm->src_mac)); data/darkstat-3.0.719/acct.c:210: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(hd->u.host.mac_addr, sm->dst_mac, sizeof(sm->dst_mac)); data/darkstat-3.0.719/addr.c:29:8: [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 _addrstrbuf[INET6_ADDRSTRLEN]; data/darkstat-3.0.719/addr.c:60: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(&(a->ip.v6), data/darkstat-3.0.719/cap.c:117:4: [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 errbuf[PCAP_ERRBUF_SIZE], *tmp_device; data/darkstat-3.0.719/cap.c:490:4: [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 errbuf[PCAP_ERRBUF_SIZE]; data/darkstat-3.0.719/conv.c:94: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(dest, src+left, right-left); data/darkstat-3.0.719/conv.c:232: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). fd_null = open(PATH_DEVNULL, O_RDWR, 0); data/darkstat-3.0.719/conv.c:241: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 tmp[1]; data/darkstat-3.0.719/darkstat.c:229:4: [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 indent[sizeof(intro)]; data/darkstat-3.0.719/daylog.c:31:8: [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 datebuf[DAYLOG_DATE_LEN]; data/darkstat-3.0.719/daylog.c:67: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). fd = open(daylog_fn, O_WRONLY | O_APPEND | O_CREAT | O_NOFOLLOW, 0600); data/darkstat-3.0.719/db.c:55:4: [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(&no, str, 8); data/darkstat-3.0.719/db.c:310: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). int fd = open(filename, O_RDONLY | O_NOFOLLOW); data/darkstat-3.0.719/db.c:344: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). int fd = open(filename, O_WRONLY | O_CREAT | O_NOFOLLOW | O_TRUNC, 0600); data/darkstat-3.0.719/dns.c:48:4: [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 name[256]; /* http://tools.ietf.org/html/rfc1034#section-3.1 */ data/darkstat-3.0.719/dns.c:190:4: [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(ipaddr, &reply.addr, sizeof(*ipaddr)); data/darkstat-3.0.719/dns.c:278:4: [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(ip, &i->ip, sizeof(*ip)); data/darkstat-3.0.719/dns.c:345: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. char host[NI_MAXHOST]; data/darkstat-3.0.719/err.c:40:4: [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[512]; data/darkstat-3.0.719/err.c:149:4: [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[1]; data/darkstat-3.0.719/graph_db.c:129:4: [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(g->in, tmp, size); data/darkstat-3.0.719/graph_db.c:133:4: [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(g->out, tmp, size); data/darkstat-3.0.719/graph_db.c:296:4: [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 start_when[100]; data/darkstat-3.0.719/hosts_db.c:704: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(&(a.ip.v6), data/darkstat-3.0.719/hosts_db.c:1065:4: [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 ls_when[100]; data/darkstat-3.0.719/hosts_db.c:1292:4: [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 hdr[4]; data/darkstat-3.0.719/http.c:246: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(out+pos, elem[i], delta); data/darkstat-3.0.719/http.c:313: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 ipaddr[INET6_ADDRSTRLEN], portstr[12]; data/darkstat-3.0.719/http.c:380: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 date[DATE_LEN]; data/darkstat-3.0.719/http.c:735: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 buf[65536]; data/darkstat-3.0.719/http.c:751: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(conn->request+conn->request_length, buf, (size_t)recvd); data/darkstat-3.0.719/http.c:918: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(slashed_url+1, url, urllen); /* don't copy NUL */ data/darkstat-3.0.719/http.c:944: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 portstr[6]; data/darkstat-3.0.719/http.c:973: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 ipaddr[INET6_ADDRSTRLEN]; data/darkstat-3.0.719/http.c:1094:13: [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 ipaddr[INET6_ADDRSTRLEN]; data/darkstat-3.0.719/localip.c:61:17: [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 before[INET6_ADDRSTRLEN]; data/darkstat-3.0.719/localip.c:115: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(&(a.ip.v6), &sa6->sin6_addr, sizeof(a.ip.v6)); data/darkstat-3.0.719/now.c:104:4: [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(dest, &t, sizeof(t)); data/darkstat-3.0.719/pidfile.c:56: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). pidfd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 0600); data/darkstat-3.0.719/str.c:74:4: [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->buf + buf->len, s, len); data/darkstat-3.0.719/str.c:108:4: [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 out[I32_MAXLEN]; data/darkstat-3.0.719/str.c:152:4: [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 out[I64_MAXLEN]; data/darkstat-3.0.719/str.c:217:4: [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 out[2]; data/darkstat-3.0.719/bsd.c:117:31: [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). return(dlen + strlen(s)); data/darkstat-3.0.719/conv.c:90: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). assert(left < strlen(src)); /* [left means must be smaller */ data/darkstat-3.0.719/conv.c:91:21: [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). assert(right <= strlen(src)); /* right) means can be equal or smaller */ data/darkstat-3.0.719/conv.c:195: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). qslen = strlen(qs); data/darkstat-3.0.719/conv.c:196: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). keylen = strlen(key); data/darkstat-3.0.719/conv.c:247:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (read(lifeline[0], tmp, sizeof(tmp)) != 0) /* expecting EOF */ data/darkstat-3.0.719/db.c:82:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). numread = read(fd, dest, len); data/darkstat-3.0.719/db.c:127:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (!read(fd, &tmp, sizeof(tmp))) return 0; data/darkstat-3.0.719/db.c:141:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (!read(fd, &tmp, sizeof(tmp))) return 0; data/darkstat-3.0.719/db.c:188:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (!read(fd, &tmp, sizeof(tmp))) return 0; data/darkstat-3.0.719/dns.c:176:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). numread = read(dns_sock[PARENT], &reply, sizeof(reply)); data/darkstat-3.0.719/dns.c:317:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ssize_t numread = read(dns_sock[CHILD], &ip, sizeof(ip)); data/darkstat-3.0.719/err.c:46: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). pos = strlen(buf); data/darkstat-3.0.719/err.c:152:8: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (read(lockpipe[0], buf, 1) != 1) { data/darkstat-3.0.719/hosts_db.c:1423:23: [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 dnslen = strlen(b->u.host.dns); data/darkstat-3.0.719/http.c:107:21: [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 i, len = strlen(url); data/darkstat-3.0.719/http.c:137:25: [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). out = xrealloc(out, strlen(out)+1); /* dealloc what we don't need */ data/darkstat-3.0.719/http.c:191: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). urilen = strlen(uri); data/darkstat-3.0.719/http.c:240: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). size_t delta = strlen(elem[i]); data/darkstat-3.0.719/http.c:259: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). if (pos != urilen) out = xrealloc(out, strlen(out)+1); data/darkstat-3.0.719/http.c:467: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). bound1 = pos - conn->request + strlen(field); data/darkstat-3.0.719/http.c:915: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). urllen = strlen(url); data/darkstat-3.0.719/http.c:932:21: [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). http_base_len = strlen(http_base_url); data/darkstat-3.0.719/localip.c:62:10: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(before, addr_to_str(ips->addrs + *idx), INET6_ADDRSTRLEN); data/darkstat-3.0.719/ncache.c:55: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). newlen = strlen(e->name) + strlen(name) + 2; data/darkstat-3.0.719/ncache.c:55:34: [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). newlen = strlen(e->name) + strlen(name) + 2; data/darkstat-3.0.719/static/c-ify.c:16:14: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while ((c = getchar()) != EOF) { data/darkstat-3.0.719/str.c:88: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). str_appendn(buf, s, strlen(s)); data/darkstat-3.0.719/str.c:232:10: [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(format); data/darkstat-3.0.719/str.h:52:57: [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). (__builtin_constant_p(s) ? sizeof(s)-1 : strlen(s)) ) ANALYSIS SUMMARY: Hits = 83 Lines analyzed = 9460 in approximately 0.31 seconds (30246 lines/second) Physical Source Lines of Code (SLOC) = 6946 Hits@level = [0] 42 [1] 30 [2] 44 [3] 1 [4] 7 [5] 1 Hits@level+ = [0+] 125 [1+] 83 [2+] 53 [3+] 9 [4+] 8 [5+] 1 Hits/KSLOC@level+ = [0+] 17.996 [1+] 11.9493 [2+] 7.63029 [3+] 1.29571 [4+] 1.15174 [5+] 0.143968 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.