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/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/constants.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/fs.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httpresponse.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/callback.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/filedatasource-unix.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/md5.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httprequest.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.hpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/thread.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-ietf.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/set_invalid_parameter.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/webapplication.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/fs.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/utils.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/tqueue.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/winutils.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/staticpath.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/mime.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-ietf.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/utils.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/http_parser.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/http_parser.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/contrib/parsertrace.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/contrib/url_parser.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/bench.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hybi03.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/winutils.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hybi03.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/callback.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/uvutil.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/filedatasource-win.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/md5.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httpuv.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/auto_deleter.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/filedatasource.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/mime.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/staticpath.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/RcppExports.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/RcppExports-legacy.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/callbackqueue.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/callbackqueue.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/http.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httprequest.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httpresponse.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/httpuv.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/socket.cpp
Examining data/r-cran-httpuv-1.5.4+dfsg/src/socket.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/thread.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/uvutil.h
Examining data/r-cran-httpuv-1.5.4+dfsg/src/webapplication.h

FINAL RESULTS:

data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3590:20:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
  size_t buf1len = sprintf(buf1, "%s\r\nConnection: Keep-Alive\r\nContent-Length: %lu\r\n\r\n",
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3627:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r1->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3628:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r2->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3629:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r3->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3680:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r1->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3681:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r2->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3682:3:  [4] (buffer) strcat:
  Does not check for buffer overflows when concatenating to destination
  [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or
  snprintf (warning: strncat is easily misused).
  strcat(total, r3->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:4081:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:4101:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method);
data/r-cran-httpuv-1.5.4+dfsg/src/utils.h:52:11:  [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.
  int n = vsnprintf(buf, max_size, fmt, args);
data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.cpp:15:28:  [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.
void encodeblock( unsigned char in[3], unsigned char out[4], int len )
data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.cpp:15:49:  [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.
void encodeblock( unsigned char in[3], unsigned char out[4], int len )
data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.hpp:4:28:  [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.
void encodeblock( unsigned char in[3], unsigned char out[4], int len );
data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.hpp:4:49:  [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.
void encodeblock( unsigned char in[3], unsigned char out[4], int len );
data/r-cran-httpuv-1.5.4+dfsg/src/base64/base64.hpp:9: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.
   unsigned char in[3], out[4];
data/r-cran-httpuv-1.5.4+dfsg/src/filedatasource-unix.cpp:14: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(path.c_str(), O_RDONLY);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/contrib/parsertrace.c:111: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).
  FILE* file = fopen(filename, "r");
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/http_parser.c:190: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 tokens[256] = {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:54:3:  [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 response_status[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:55:3:  [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 request_path[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:56:3:  [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 request_url[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:57:3:  [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 fragment[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:58:3:  [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 query_string[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:59:3:  [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 body[MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:66:3:  [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 headers [MAX_HEADERS][2][MAX_ELEMENT_SIZE];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:1806: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(dst + dlen, src, ncpy);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:1830: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(dst, src, ncpy);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2381:3:  [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 ubuf[256];                                                    \
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2384: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(ubuf, (found)->request_url + (u)->field_data[(fn)].off,   \
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3589:3:  [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 buf1[3000];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3620:3:  [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 total[ strlen(r1->raw)
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3675:3:  [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 total[80*1024] = "\0";
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3676:3:  [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 buf1[80*1024] = "\0";
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3677:3:  [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 buf2[80*1024] = "\0";
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3678:3:  [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 buf3[80*1024] = "\0";
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3800: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, headers, headers_len);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3805: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(buf + wrote, "400\r\n", 5);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3809:5:  [2] (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). Risk is low because the source is a constant string.
    strcpy(buf + wrote, "\r\n");
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3813: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 + wrote, "0\r\n\r\n", 6);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:4080: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[200];
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:4100: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[200];
data/r-cran-httpuv-1.5.4+dfsg/src/md5.c:226: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(&ctx->buffer[used], data, size);
data/r-cran-httpuv-1.5.4+dfsg/src/md5.c:230: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(&ctx->buffer[used], data, free);
data/r-cran-httpuv-1.5.4+dfsg/src/md5.c:241: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(ctx->buffer, data, size);
data/r-cran-httpuv-1.5.4+dfsg/src/md5.h:37:11:  [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.
	unsigned char buffer[64];
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:141: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(block, buffer, 64);
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:213: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(&context->buffer[j], data, (i = 64-j));
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:221: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(&context->buffer[j], &data[i], len - i);
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:268: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.
unsigned char digest[SHA1_DIGEST_SIZE], buffer[16384];
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:281:22:  [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 (!(file = fopen(argv[1], "rb"))) {
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:325: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(c,"%02X", digest[i*4+j]);
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:339: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 output[80];
data/r-cran-httpuv-1.5.4+dfsg/src/utils.h:48:3:  [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[max_size];
data/r-cran-httpuv-1.5.4+dfsg/src/utils.h:250:3:  [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 res[maxlen];
data/r-cran-httpuv-1.5.4+dfsg/src/uvutil.h:94:12:  [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.
  unsigned char addr[16];
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.cpp:29: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 pData[MAX_HEADER_BYTES], size_t* pLen) const {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.cpp:46: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(pBuf + 2, &payloadSize_64, sizeof(uint16_t));
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.cpp:53: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(pBuf + 2, &payloadSize_64, sizeof(uint64_t));
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.cpp:60: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(pMaskingKey, &maskingKey, sizeof(int32_t));
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-base.h:29:26:  [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 pData[MAX_HEADER_BYTES], size_t* pLen) const;
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.cpp:16: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.
                       char pHeaderData[MAX_HEADER_BYTES], size_t* pHeaderLen,
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.cpp:17: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.
                       char pFooterData[MAX_FOOTER_BYTES], size_t* pFooterLen) const {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.h:46:18:  [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 pHeaderData[MAX_HEADER_BYTES], size_t* pHeaderLen,
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.h:47:18:  [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 pFooterData[MAX_FOOTER_BYTES], size_t* pFooterLen
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hybi03.cpp:72: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(handshake + 8, *ppData, 8);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hybi03.h:23:26:  [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 pData[MAX_HEADER_BYTES], size_t* pLen) const;
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:152:22:  [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 pHeaderData[MAX_HEADER_BYTES], size_t* pHeaderLen,
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:153:22:  [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 pFooterData[MAX_FOOTER_BYTES], size_t* pFooterLen
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:100:26:  [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 pHeaderData[MAX_HEADER_BYTES], size_t* pHeaderLen,
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:101:26:  [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 pFooterData[MAX_FOOTER_BYTES], size_t* pFooterLen
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:133:26:  [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 pHeaderData[MAX_HEADER_BYTES], size_t* pHeaderLen,
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:134:26:  [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 pFooterData[MAX_FOOTER_BYTES], size_t* pFooterLen
data/r-cran-httpuv-1.5.4+dfsg/src/winutils.cpp:40:18:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
   int chars = ::MultiByteToWideChar(CP_UTF8, 0,
data/r-cran-httpuv-1.5.4+dfsg/src/winutils.cpp:48:14:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
   chars = ::MultiByteToWideChar(CP_UTF8, 0,
data/r-cran-httpuv-1.5.4+dfsg/src/filedatasource-unix.cpp:65:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  ssize_t bytesRead = read(_fd, buffer, bytesDesired);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/contrib/url_parser.c:34: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(argv[2]);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2428:47:  [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 (http_parser_parse_url(m->request_url, strlen(m->request_url), 0, &u)) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2522: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).
    off += strlen(m->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2525: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).
      off -= strlen(m->upgrade);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2534: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).
      *(body + nread + strlen(m->upgrade)) = '\0';
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:2555: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).
  size_t i, j, len = strlen(raw), error_location_line = 0;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3179:32:  [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(test->url),
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3222: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).
  size_t raw_len = strlen(message->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3227:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    size_t read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3236:53:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        messages[num_messages - 1].upgrade = msg1 + read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3240:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      if (read != msg1len) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3241:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        print_error(msg1, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3250:51:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      messages[num_messages - 1].upgrade = msg2 + read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3254:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if (read != msg2len) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3255:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      print_error(msg2, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3261:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if (read != 0) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3262:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      print_error(message->raw, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3284:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  size_t read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3285: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).
  size_t l = strlen(message->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3292:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if (read != toread) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3293:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
      print_error(message->raw, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3300:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if (read != 0) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3301:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    print_error(message->raw, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3322: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).
  parse(buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3352:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3353: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3356: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3386:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3387: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3390: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3420:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3421: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3424: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3447:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3448: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3451: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3474:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3475: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3478: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3499:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3500: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3503: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).
  size_t buflen = strlen(buf);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3528:62:  [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).
  parsed = http_parser_execute(&parser, &settings_null, buf, strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3529: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).
  assert(parsed == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3531: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).
  assert(parser.nread == strlen(buf));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3620:15:  [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).
  char total[ strlen(r1->raw)
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3621:15:  [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(r2->raw)
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3622:15:  [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(r3->raw)
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3633:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  size_t read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3635: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).
  read = parse(total, strlen(total));
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3638:32:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    upgrade_message_fix(total, read, 3, r1, r2, r3);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3642:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if (read != strlen(total)) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3642:15:  [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 (read != strlen(total)) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3643:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    print_error(total, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3649:7:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  if (read != 0) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3650:24:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    print_error(total, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3684:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  size_t read;
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3686: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).
  int total_len = strlen(total);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3723:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read != buf1_len) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3724:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          print_error(buf1, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3732:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read != buf1_len + buf2_len) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3733:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          print_error(buf2, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3741:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read != buf1_len + buf2_len + buf3_len) {
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3742:29:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          print_error(buf3, read);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3750:38:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          upgrade_message_fix(total, read, 3, r1, r2, r3);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3796: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 headers_len = strlen(headers);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3826: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).
  size_t buflen = strlen(msg->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http-parser/test.c:3878: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).
  size_t buflen = strlen(msg->raw);
data/r-cran-httpuv-1.5.4+dfsg/src/http.cpp:75:15:  [1] (access) umask:
  Ensure that umask is given most restrictive possible setting (e.g., 066 or
  077) (CWE-732).
    oldMask = umask(mask);
data/r-cran-httpuv-1.5.4+dfsg/src/http.cpp:78:5:  [1] (access) umask:
  Ensure that umask is given most restrictive possible setting (e.g., 066 or
  077) (CWE-732).
    umask(oldMask);
data/r-cran-httpuv-1.5.4+dfsg/src/httprequest.cpp:759:39:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    boost::bind(&WebSocketConnection::read,
data/r-cran-httpuv-1.5.4+dfsg/src/httprequest.cpp:866:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        p_wsc->read(buf->base, nread);
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:328:9:  [1] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source is a constant character.
        sprintf(c, " ");
data/r-cran-httpuv-1.5.4+dfsg/src/sha1/sha1.c:345:60:  [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).
        reid_SHA1_Update(&context, (uint8_t*)test_data[k], strlen(test_data[k]));
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.cpp:26:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void WSHixie76Parser::read(const char* data, size_t len) {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets-hixie76.h:50:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(const char* data, size_t len);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:60:25:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  return _pProto->isFin(read(0, 1));
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:63:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  uint8_t oc = read(4, 4);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:67:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  return read(8, 1) != 0;
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:70:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  uint8_t pl = read(9, 7);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:84:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    key[0] = read(9 + payloadLengthLength(), 8);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:85:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    key[1] = read(9 + payloadLengthLength() + 8, 8);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:86:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    key[2] = read(9 + payloadLengthLength() + 16, 8);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:87:14:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    key[3] = read(9 + payloadLengthLength() + 24, 8);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:93:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
uint8_t WSHyBiFrameHeader::read(size_t bitOffset, size_t bitWidth) const {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:125:17:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  uint8_t pll = read(9, 7);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:159:20:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void WSHyBiParser::read(const char* data, size_t len) {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:308:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void WebSocketConnection::read(const char* data, size_t len) {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:312:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  _pParser->read(data, len);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:315:27:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
void WebSocketConnection::read(boost::shared_ptr<std::vector<char> > buf) {
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.cpp:318:3:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  read(safe_vec_addr(*buf), buf->size());
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:67:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  uint8_t read(size_t bitOffset, size_t bitWidth) const;
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:104:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  virtual void read(const char* data, size_t len) = 0;
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:137:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(const char* data, size_t len);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:195:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(const char* data, size_t len);
data/r-cran-httpuv-1.5.4+dfsg/src/websockets.h:196:8:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  void read(boost::shared_ptr<std::vector<char> > buf);

ANALYSIS SUMMARY:

Hits = 171
Lines analyzed = 15567 in approximately 0.39 seconds (39623 lines/second)
Physical Source Lines of Code (SLOC) = 11791
Hits@level = [0] 103 [1]  97 [2]  64 [3]   0 [4]  10 [5]   0
Hits@level+ = [0+] 274 [1+] 171 [2+]  74 [3+]  10 [4+]  10 [5+]   0
Hits/KSLOC@level+ = [0+] 23.2381 [1+] 14.5026 [2+] 6.27597 [3+] 0.848104 [4+] 0.848104 [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.