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/libcache-memcached-fast-perl-0.25/ppport.h Examining data/libcache-memcached-fast-perl-0.25/src/array.c Examining data/libcache-memcached-fast-perl-0.25/src/array.h Examining data/libcache-memcached-fast-perl-0.25/src/client.c Examining data/libcache-memcached-fast-perl-0.25/src/client.h Examining data/libcache-memcached-fast-perl-0.25/src/connect.c Examining data/libcache-memcached-fast-perl-0.25/src/connect.h Examining data/libcache-memcached-fast-perl-0.25/src/poll_select.c Examining data/libcache-memcached-fast-perl-0.25/src/poll_select.h Examining data/libcache-memcached-fast-perl-0.25/src/socket_posix.h Examining data/libcache-memcached-fast-perl-0.25/src/socket_posix.c Examining data/libcache-memcached-fast-perl-0.25/src/socket_win32.c Examining data/libcache-memcached-fast-perl-0.25/src/dispatch_key.h Examining data/libcache-memcached-fast-perl-0.25/src/socket_win32.h Examining data/libcache-memcached-fast-perl-0.25/src/dispatch_key.c Examining data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.h Examining data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.c FINAL RESULTS: data/libcache-memcached-fast-perl-0.25/ppport.h:6890:14: [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. retval = vsnprintf(buffer, len, format, ap); data/libcache-memcached-fast-perl-0.25/ppport.h:6892:14: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. retval = vsprintf(buffer, format, ap); data/libcache-memcached-fast-perl-0.25/ppport.h:6921:5: [4] (format) vsprintf: Potential format string problem (CWE-134). Make format string constant. vsprintf(buffer, pat, args); data/libcache-memcached-fast-perl-0.25/src/client.c:1879:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, " " FMT_FLAGS " " FMT_EXPTIME " " FMT_VALUE_SIZE "%s\r\n", data/libcache-memcached-fast-perl-0.25/src/client.c:1919:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, " " FMT_FLAGS " " FMT_EXPTIME " " FMT_VALUE_SIZE data/libcache-memcached-fast-perl-0.25/src/client.c:2012:7: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, " " FMT_ARITH "%s\r\n", arg, get_noreply(state)); data/libcache-memcached-fast-perl-0.25/src/client.c:2043:23: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. size_t str_size = sprintf(buf, "%s\r\n", get_noreply(state)); data/libcache-memcached-fast-perl-0.25/src/client.c:2075:23: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. size_t str_size = sprintf(buf, " " FMT_EXPTIME "%s\r\n", exptime, get_noreply(state)); data/libcache-memcached-fast-perl-0.25/src/client.c:2121:11: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(buf, "flush_all " FMT_DELAY "%s\r\n", data/libcache-memcached-fast-perl-0.25/src/connect.c:53:9: [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. system error data/libcache-memcached-fast-perl-0.25/ppport.h:3842:42: [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 CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) data/libcache-memcached-fast-perl-0.25/ppport.h:6745:24: [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. && (xdigit = strchr((char *) PL_hexdigit, s[1]))) data/libcache-memcached-fast-perl-0.25/ppport.h:6967: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(dst + used, src, copy); data/libcache-memcached-fast-perl-0.25/ppport.h:6996: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(dst, src, copy); data/libcache-memcached-fast-perl-0.25/ppport.h:7088: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 octbuf[32] = "%123456789ABCDF"; data/libcache-memcached-fast-perl-0.25/ppport.h:7158:6: [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[2]; data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.c:53:11: [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(&addr[i].sin##_addr.s##_addr, \ data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.c:100:38: [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 = serv ? serv->s_port : htons(atoi(service)); data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.c:106: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(name, host->h_name, name_len + 1); data/libcache-memcached-fast-perl-0.25/src/client.c:57: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. static const char eol[2] = "\r\n"; data/libcache-memcached-fast-perl-0.25/src/client.c:225: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(s->host, host, host_len); data/libcache-memcached-fast-perl-0.25/src/client.c:232: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(s->port, port, port_len); data/libcache-memcached-fast-perl-0.25/src/client.c:584: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(s + 1, ns, ns_len); data/libcache-memcached-fast-perl-0.25/src/client.c:746: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(state->u.value.ptr, state->pos, size); data/libcache-memcached-fast-perl-0.25/src/client.c:795:25: [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. while ((size_t) ((char *) iov[1].iov_base - state->pos) < sizeof(eol)); data/libcache-memcached-fast-perl-0.25/src/client.c:1059: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(state->u.embedded.ptr, beg, len); data/libcache-memcached-fast-perl-0.25/src/client.c:1061: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(state->u.embedded.ptr, "0E0", 3); data/libcache-memcached-fast-perl-0.25/src/client.c:1122: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(state->u.embedded.ptr, beg, len); data/libcache-memcached-fast-perl-0.25/src/dispatch_key.c:180: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[4]; data/libcache-memcached-fast-perl-0.25/src/socket_posix.c:69: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(s_unix.sun_path, path, path_len); data/libcache-memcached-fast-perl-0.25/ppport.h:5335: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). sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); data/libcache-memcached-fast-perl-0.25/ppport.h:5343:59: [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 sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) data/libcache-memcached-fast-perl-0.25/ppport.h:5347:59: [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 sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) data/libcache-memcached-fast-perl-0.25/ppport.h:5367: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). sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); data/libcache-memcached-fast-perl-0.25/ppport.h:5395: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). sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); data/libcache-memcached-fast-perl-0.25/ppport.h:5416:27: [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). sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ data/libcache-memcached-fast-perl-0.25/ppport.h:5438: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). sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); data/libcache-memcached-fast-perl-0.25/ppport.h:5466: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). sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); data/libcache-memcached-fast-perl-0.25/ppport.h:5487:27: [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). sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ data/libcache-memcached-fast-perl-0.25/ppport.h:5541: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). # define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) data/libcache-memcached-fast-perl-0.25/ppport.h:6339:22: [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). STRLEN len = strlen(radix); data/libcache-memcached-fast-perl-0.25/ppport.h:6923: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). return strlen(buffer); data/libcache-memcached-fast-perl-0.25/ppport.h:6963: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). used = strlen(dst); data/libcache-memcached-fast-perl-0.25/ppport.h:6964: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). length = strlen(src); data/libcache-memcached-fast-perl-0.25/ppport.h:6993: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). length = strlen(src); data/libcache-memcached-fast-perl-0.25/src/addrinfo_hostent.c:104: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). size_t name_len = strlen(host->h_name); data/libcache-memcached-fast-perl-0.25/src/client.c:613:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). res = read(fd, buf, size); data/libcache-memcached-fast-perl-0.25/src/socket_win32.h:87:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). #define read(fd, buf, size) recv(fd, buf, size, 0) ANALYSIS SUMMARY: Hits = 48 Lines analyzed = 11188 in approximately 0.30 seconds (36980 lines/second) Physical Source Lines of Code (SLOC) = 5692 Hits@level = [0] 4 [1] 18 [2] 20 [3] 0 [4] 10 [5] 0 Hits@level+ = [0+] 52 [1+] 48 [2+] 30 [3+] 10 [4+] 10 [5+] 0 Hits/KSLOC@level+ = [0+] 9.13563 [1+] 8.43289 [2+] 5.27056 [3+] 1.75685 [4+] 1.75685 [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.