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/pound-3.0/include/utarray.h
Examining data/pound-3.0/include/uthash.h
Examining data/pound-3.0/include/hpack.h
Examining data/pound-3.0/src/hpack.c
Examining data/pound-3.0/src/http2.c
Examining data/pound-3.0/src/http.c
Examining data/pound-3.0/src/config.c
Examining data/pound-3.0/src/backend.c
Examining data/pound-3.0/src/util.c
Examining data/pound-3.0/src/pound.c

FINAL RESULTS:

data/pound-3.0/include/uthash.h:526:29:  [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 HASH_OOPS(...) do { fprintf(stderr, __VA_ARGS__); exit(-1); } while (0)
data/pound-3.0/src/backend.c:59: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(request, msg);
data/pound-3.0/src/backend.c:583:9:  [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(client_addr, msg);
data/pound-3.0/src/config.c:41:5:  [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, MAXBUF, fmt, ap);
data/pound-3.0/src/http.c:97:9:  [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(addr, msg);
data/pound-3.0/src/http.c:239:9:  [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(f_client, fmt_body, code, reason, body);
data/pound-3.0/src/http.c:242:9:  [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(f_client, fmt_empty, code, reason);
data/pound-3.0/src/http.c:276:9:  [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(request, buf);
data/pound-3.0/src/util.c:41:5:  [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, MAXBUF - 1, fmt, ap);
data/pound-3.0/src/util.c:62:5:  [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, MAXBUF - 1, fmt, ap);
data/pound-3.0/src/config.c:617:20:  [3] (buffer) getopt:
  Some older implementations do not protect against internal buffer overflows
  (CWE-120, CWE-20). Check implementation on installation, or limit the size
  of all string inputs.
    while((c_opt = getopt(argc, argv, "f:cvd:p:")) > 0)
data/pound-3.0/src/http.c:60:21:  [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.
                n = random();
data/pound-3.0/src/http.c:108:17:  [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.
            n = random();
data/pound-3.0/src/http.c:213:65:  [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.
        snprintf(private_name, NI_MAXHOST, "inproc://HTTP_%ld", random() % 10000);
data/pound-3.0/src/pound.c:128:12:  [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(global.root_jail)) {
data/pound-3.0/include/utarray.h:112:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  else { memcpy(_utarray_eltptr(a,(a)->i++), p, (a)->icd.sz); };              \
data/pound-3.0/include/utarray.h:140:10:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
  else { memcpy(_utarray_eltptr(a,j), p, (a)->icd.sz); };                     \
data/pound-3.0/include/utarray.h:159: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(_utarray_eltptr(a,j), _utarray_eltptr(w,0),                        \
data/pound-3.0/src/backend.c:45: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[MAXBUF + 1], request[MAXBUF + 1], *msg;
data/pound-3.0/src/backend.c:209: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[MAXBUF], *method, *path, *authority, *cp, *tp, *ttp, request[MAXBUF];
data/pound-3.0/src/backend.c:219: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(&FRAMESIZE, msg, sizeof(int));
data/pound-3.0/src/backend.c:226: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(&TABSIZE, msg, sizeof(int));
data/pound-3.0/src/backend.c:233: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(&headers, msg, sizeof(struct hpack_headerblock *));
data/pound-3.0/src/backend.c:286: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(&headers, msg, sizeof(struct hpack_headerblock *));
data/pound-3.0/src/backend.c:321:13:  [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, "%d", reply_code);
data/pound-3.0/src/backend.c:488: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    *msg, client_addr[NI_MAXHOST], *cp, *saveptr;
data/pound-3.0/src/backend.c:573: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(&http_ver, msg, sizeof(int));
data/pound-3.0/src/config.c:36: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[MAXBUF + 1];
data/pound-3.0/src/config.c:57:15:  [2] (misc) fopen:
  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).
    || (fin = fopen(fname, "r")) == NULL
data/pound-3.0/src/config.c:120: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                addr[NI_MAXHOST], port[NI_MAXSERV], redirect[NI_MAXHOST];
data/pound-3.0/src/config.c:144:31:  [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).
                res.timeout = atoi(yaml_document_get_node(document, cur_pair->value)->data.scalar.value);
data/pound-3.0/src/config.c:147:31:  [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).
                res.threads = atoi(yaml_document_get_node(document, cur_pair->value)->data.scalar.value);
data/pound-3.0/src/config.c:207: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                pat[MAXBUF];
data/pound-3.0/src/config.c:230:32:  [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).
                svc->session = atoi(yaml_document_get_node(document, map_pair->value)->data.scalar.value);
data/pound-3.0/src/config.c:272: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                addr[NI_MAXHOST], port[NI_MAXSERV];
data/pound-3.0/src/config.c:296:30:  [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).
                res.client = atoi(yaml_document_get_node(document, map_pairs->value)->data.scalar.value);
data/pound-3.0/src/config.c:299:31:  [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).
                res.threads = atoi(yaml_document_get_node(document, map_pairs->value)->data.scalar.value);
data/pound-3.0/src/config.c:373: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[NI_MAXHOST];
data/pound-3.0/src/config.c:484: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                addr[NI_MAXHOST], port[NI_MAXSERV];
data/pound-3.0/src/config.c:515:30:  [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).
                res.client = atoi(yaml_document_get_node(document, map_pairs->value)->data.scalar.value);
data/pound-3.0/src/config.c:518:31:  [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).
                res.threads = atoi(yaml_document_get_node(document, map_pairs->value)->data.scalar.value);
data/pound-3.0/src/config.c:631:32:  [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).
            global.log_level = atoi(optarg);
data/pound-3.0/src/config.c:653:16:  [2] (misc) fopen:
  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).
    if((f_in = fopen(f_conf, "r")) == NULL)
data/pound-3.0/src/config.c:683: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(&backends[i], be, sizeof(BACKEND));
data/pound-3.0/src/config.c:702: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(&http_listeners[i], http, sizeof(HTTP_LISTENER));
data/pound-3.0/src/hpack.c:90: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(res, ptr, size * (nmemb > oldnmemb? oldnmemb: nmemb));
data/pound-3.0/src/hpack.c:257: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(idbuf, id, sizeof(*id));
data/pound-3.0/src/hpack.c:517: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(str, ptr, (size_t)i);
data/pound-3.0/src/hpack.c:1034: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(buf->data, data, len);
data/pound-3.0/src/hpack.c:1082: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(buf->data + buf->wpos, data, len);
data/pound-3.0/src/http.c:42: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    *msg, addr[NI_MAXHOST];
data/pound-3.0/src/http.c:138: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    *msg, private_name[NI_MAXHOST], buf[MAXBUF], *method, *path;
data/pound-3.0/src/http.c:251: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            *msg, *headers[MAXHEADERS], private_name[NI_MAXHOST], request[MAXBUF], buf[MAXBUF];
data/pound-3.0/src/http.c:524: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            *msg, peer_name[NI_MAXHOST], crt_buf[MAXBUF];
data/pound-3.0/src/pound.c:52: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            name[NI_MAXHOST], port[NI_MAXSERV], *msg;
data/pound-3.0/src/pound.c:119:17:  [2] (misc) fopen:
  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).
    if((f_pid = fopen(global.pid, "w")) == NULL)
data/pound-3.0/src/util.c:34: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[MAXBUF];
data/pound-3.0/src/util.c:54: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[MAXBUF];
data/pound-3.0/src/util.c:78: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    be_addr[NI_MAXHOST];
data/pound-3.0/include/uthash.h:92:26:  [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 uthash_strlen(s) strlen(s)
data/pound-3.0/src/backend.c:89:30:  [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).
    nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:101:38:  [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).
            nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:114: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).
        nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:117: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).
    total += strlen(buf);
data/pound-3.0/src/backend.c:124:45:  [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).
        nn_send(s_listener, be->add_header, strlen(be->add_header), 0);
data/pound-3.0/src/backend.c:127: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).
        total += strlen(be->add_header) + 2;
data/pound-3.0/src/backend.c:131: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).
        nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:132: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).
        total += strlen(buf);
data/pound-3.0/src/backend.c:150:42:  [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).
                nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:151:26:  [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).
                total += strlen(buf);
data/pound-3.0/src/backend.c:174:42:  [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).
                nn_send(s_listener, buf, strlen(buf), 0);
data/pound-3.0/src/backend.c:176:26:  [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).
                total += strlen(buf);
data/pound-3.0/src/backend.c:324: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).
            total += strlen(":status") + strlen(buf);
data/pound-3.0/src/backend.c:324:42:  [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).
            total += strlen(":status") + strlen(buf);
data/pound-3.0/src/backend.c:330:9:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
        strncpy(buf, be->add_header, MAXBUF);
data/pound-3.0/src/backend.c:339: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/backend.c:339: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/backend.c:364: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/backend.c:364: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/backend.c:454: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/backend.c:454: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).
        total += strlen(cp) + strlen(ttp);
data/pound-3.0/src/config.c:138:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(addr, yaml_document_get_node(document, cur_pair->value)->data.scalar.value, NI_MAXHOST);
data/pound-3.0/src/config.c:141:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(port, yaml_document_get_node(document, cur_pair->value)->data.scalar.value, NI_MAXSERV);
data/pound-3.0/src/config.c:152:20:  [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(strlen(res.add_header) == 0)
data/pound-3.0/src/config.c:290:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(addr, yaml_document_get_node(document, map_pairs->value)->data.scalar.value, NI_MAXHOST);
data/pound-3.0/src/config.c:293:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(port, yaml_document_get_node(document, map_pairs->value)->data.scalar.value, NI_MAXSERV);
data/pound-3.0/src/config.c:509:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(addr, yaml_document_get_node(document, map_pairs->value)->data.scalar.value, NI_MAXHOST);
data/pound-3.0/src/config.c:512:17:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
                strncpy(port, yaml_document_get_node(document, map_pairs->value)->data.scalar.value, NI_MAXSERV);
data/pound-3.0/src/hpack.c:304: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).
	newsize = strlen(hdr->hdr_name) + strlen(hdr->hdr_value) + 32;
data/pound-3.0/src/hpack.c:304: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).
	newsize = strlen(hdr->hdr_name) + strlen(hdr->hdr_value) + 32;
data/pound-3.0/src/hpack.c:336:7:  [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(hdr->hdr_name) +
data/pound-3.0/src/hpack.c:337:7:  [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(hdr->hdr_value) +
data/pound-3.0/src/hpack.c:800: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).
	slen = strlen(str);
data/pound-3.0/src/hpack.c:931:6:  [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 (strlen(str) != data_len) {
data/pound-3.0/src/http.c:123:58:  [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).
                HASH_ADD_KEYPTR(hh, sessions, cur->addr, strlen(cur->addr), cur);
data/pound-3.0/src/http.c:202:52:  [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).
    nn_send(http->services[i]->sock_in, peer_name, strlen(peer_name) + 1, 0);
data/pound-3.0/src/http.c:216:43:  [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(nn_send(be->sock_in, private_name, strlen(private_name) + 1, 0) < 0) {
data/pound-3.0/src/http.c:240: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).
        return strlen(fmt_body) + 1 + strlen(reason) + strlen(body);
data/pound-3.0/src/http.c:240:39:  [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(fmt_body) + 1 + strlen(reason) + strlen(body);
data/pound-3.0/src/http.c:240:56:  [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(fmt_body) + 1 + strlen(reason) + strlen(body);
data/pound-3.0/src/http.c:243: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).
        return strlen(fmt_empty) + 1 + strlen(reason);
data/pound-3.0/src/http.c:243:40:  [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(fmt_empty) + 1 + strlen(reason);
data/pound-3.0/src/http.c:277:45:  [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(!strncasecmp(request, "CONNECT", strlen("CONNECT"))) {
data/pound-3.0/src/http.c:303:46:  [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).
                    fwrite(global.err405, 1, strlen(global.err405), f_client);
data/pound-3.0/src/http.c:316:46:  [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(!strncasecmp(buf, "Upgrade:", strlen("Upgrade:"))) {
data/pound-3.0/src/http.c:320:56:  [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).
            } else if(!strncasecmp(buf, "Connection:", strlen("Connection:"))) {
data/pound-3.0/src/http.c:402:39:  [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).
        nn_send(s_private, peer_name, strlen(peer_name) + 1, 0);
data/pound-3.0/src/http.c:403: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).
        nn_send(s_private, request, strlen(request) + 1, 0);
data/pound-3.0/src/http.c:407:41:  [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).
            nn_send(s_private, crt_buf, strlen(crt_buf) + 1, 0);
data/pound-3.0/src/http.c:413:48:  [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).
                nn_send(s_private, headers[i], strlen(headers[i]) + 1, 0);
data/pound-3.0/src/http.c:444: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).
                        nn_send(s_private, buf, strlen(buf) + 1, 0);
data/pound-3.0/src/http.c:448:53:  [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).
                            nn_send(s_private, buf, strlen(buf) + 1, 0);
data/pound-3.0/src/http2.c:98:19:  [1] (buffer) getc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if((cin = getc(f)) == EOF)
data/pound-3.0/src/http2.c:181: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).
        rep.length = strlen(body);
data/pound-3.0/src/http2.c:513:46:  [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).
                nn_send(as->s_be, peer_name, strlen(peer_name) + 1, 0);
data/pound-3.0/src/util.c:164:5:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120).
    strncpy(name, host_name, host_len);

ANALYSIS SUMMARY:

Hits = 116
Lines analyzed = 6105 in approximately 0.21 seconds (28718 lines/second)
Physical Source Lines of Code (SLOC) = 5065
Hits@level = [0]  47 [1]  57 [2]  44 [3]   5 [4]  10 [5]   0
Hits@level+ = [0+] 163 [1+] 116 [2+]  59 [3+]  15 [4+]  10 [5+]   0
Hits/KSLOC@level+ = [0+] 32.1816 [1+] 22.9023 [2+] 11.6486 [3+] 2.9615 [4+] 1.97433 [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.