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-vctrs-0.3.5/src/equal.h
Examining data/r-cran-vctrs-0.3.5/src/size-common.c
Examining data/r-cran-vctrs-0.3.5/src/arg-counter.c
Examining data/r-cran-vctrs-0.3.5/src/version.c
Examining data/r-cran-vctrs-0.3.5/src/subscript.c
Examining data/r-cran-vctrs-0.3.5/src/c.h
Examining data/r-cran-vctrs-0.3.5/src/dictionary.c
Examining data/r-cran-vctrs-0.3.5/src/strides.h
Examining data/r-cran-vctrs-0.3.5/src/poly-op.h
Examining data/r-cran-vctrs-0.3.5/src/slice.c
Examining data/r-cran-vctrs-0.3.5/src/fields.c
Examining data/r-cran-vctrs-0.3.5/src/cast.h
Examining data/r-cran-vctrs-0.3.5/src/shape.h
Examining data/r-cran-vctrs-0.3.5/src/order-truelength.c
Examining data/r-cran-vctrs-0.3.5/src/growable.c
Examining data/r-cran-vctrs-0.3.5/src/dim.c
Examining data/r-cran-vctrs-0.3.5/src/slice-assign-array.c
Examining data/r-cran-vctrs-0.3.5/src/ptype2-dispatch.c
Examining data/r-cran-vctrs-0.3.5/src/hash.c
Examining data/r-cran-vctrs-0.3.5/src/arg-counter.h
Examining data/r-cran-vctrs-0.3.5/src/type-date-time.c
Examining data/r-cran-vctrs-0.3.5/src/typeof2-s3.c
Examining data/r-cran-vctrs-0.3.5/src/hash.h
Examining data/r-cran-vctrs-0.3.5/src/cast-dispatch.c
Examining data/r-cran-vctrs-0.3.5/src/slice-array.c
Examining data/r-cran-vctrs-0.3.5/src/c.c
Examining data/r-cran-vctrs-0.3.5/src/type-info.c
Examining data/r-cran-vctrs-0.3.5/src/rep.c
Examining data/r-cran-vctrs-0.3.5/src/callables.c
Examining data/r-cran-vctrs-0.3.5/src/type2.c
Examining data/r-cran-vctrs-0.3.5/src/init.c
Examining data/r-cran-vctrs-0.3.5/src/type.c
Examining data/r-cran-vctrs-0.3.5/src/slice-chop.c
Examining data/r-cran-vctrs-0.3.5/src/slice-assign.c
Examining data/r-cran-vctrs-0.3.5/src/utils.c
Examining data/r-cran-vctrs-0.3.5/src/dim.h
Examining data/r-cran-vctrs-0.3.5/src/order-groups.c
Examining data/r-cran-vctrs-0.3.5/src/bind.c
Examining data/r-cran-vctrs-0.3.5/src/type-data-frame.h
Examining data/r-cran-vctrs-0.3.5/src/compare.c
Examining data/r-cran-vctrs-0.3.5/src/unspecified.c
Examining data/r-cran-vctrs-0.3.5/src/slice.h
Examining data/r-cran-vctrs-0.3.5/src/cast.c
Examining data/r-cran-vctrs-0.3.5/src/owned.h
Examining data/r-cran-vctrs-0.3.5/src/utils.h
Examining data/r-cran-vctrs-0.3.5/src/order-radix.h
Examining data/r-cran-vctrs-0.3.5/src/slice-assign.h
Examining data/r-cran-vctrs-0.3.5/src/order-sortedness.c
Examining data/r-cran-vctrs-0.3.5/src/names.c
Examining data/r-cran-vctrs-0.3.5/src/order-radix.c
Examining data/r-cran-vctrs-0.3.5/src/group.c
Examining data/r-cran-vctrs-0.3.5/src/conditions.c
Examining data/r-cran-vctrs-0.3.5/src/names.h
Examining data/r-cran-vctrs-0.3.5/src/size.c
Examining data/r-cran-vctrs-0.3.5/src/order-groups.h
Examining data/r-cran-vctrs-0.3.5/src/utils-dispatch.c
Examining data/r-cran-vctrs-0.3.5/src/typeof2.c
Examining data/r-cran-vctrs-0.3.5/src/c-unchop.c
Examining data/r-cran-vctrs-0.3.5/src/ptype2.h
Examining data/r-cran-vctrs-0.3.5/src/cast-bare.c
Examining data/r-cran-vctrs-0.3.5/src/utils-rlang.h
Examining data/r-cran-vctrs-0.3.5/src/utils-rlang.c
Examining data/r-cran-vctrs-0.3.5/src/type-data-frame.c
Examining data/r-cran-vctrs-0.3.5/src/vctrs.h
Examining data/r-cran-vctrs-0.3.5/src/equal.c
Examining data/r-cran-vctrs-0.3.5/src/type-tibble.h
Examining data/r-cran-vctrs-0.3.5/src/arg.h
Examining data/r-cran-vctrs-0.3.5/src/subscript.h
Examining data/r-cran-vctrs-0.3.5/src/translate.h
Examining data/r-cran-vctrs-0.3.5/src/poly-op.c
Examining data/r-cran-vctrs-0.3.5/src/dictionary.h
Examining data/r-cran-vctrs-0.3.5/src/runs.c
Examining data/r-cran-vctrs-0.3.5/src/altrep-rle.c
Examining data/r-cran-vctrs-0.3.5/src/type-factor.c
Examining data/r-cran-vctrs-0.3.5/src/type-tibble.c
Examining data/r-cran-vctrs-0.3.5/src/altrep-rle.h
Examining data/r-cran-vctrs-0.3.5/src/lazy.h
Examining data/r-cran-vctrs-0.3.5/src/subscript-loc.h
Examining data/r-cran-vctrs-0.3.5/src/fill.c
Examining data/r-cran-vctrs-0.3.5/src/order-sortedness.h
Examining data/r-cran-vctrs-0.3.5/src/order-truelength.h
Examining data/r-cran-vctrs-0.3.5/src/arg.c
Examining data/r-cran-vctrs-0.3.5/src/type-factor.h
Examining data/r-cran-vctrs-0.3.5/src/subscript-loc.c
Examining data/r-cran-vctrs-0.3.5/src/altrep.h
Examining data/r-cran-vctrs-0.3.5/src/complete.c
Examining data/r-cran-vctrs-0.3.5/src/proxy.c
Examining data/r-cran-vctrs-0.3.5/src/translate.c
Examining data/r-cran-vctrs-0.3.5/src/shape.c
Examining data/r-cran-vctrs-0.3.5/src/proxy-restore.c
Examining data/r-cran-vctrs-0.3.5/src/split.c
Examining data/r-cran-vctrs-0.3.5/src/ptype-common.h
Examining data/r-cran-vctrs-0.3.5/inst/include/vctrs.c
Examining data/r-cran-vctrs-0.3.5/inst/include/vctrs.h

FINAL RESULTS:

data/r-cran-vctrs-0.3.5/src/utils.c:1725: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, FMT_BUFSIZE, FMT, dots);     \
data/r-cran-vctrs-0.3.5/src/arg.c:102: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, src, len);
data/r-cran-vctrs-0.3.5/src/arg.c:196: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, src, len);
data/r-cran-vctrs-0.3.5/src/arg.c:206: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 tmp[1];
data/r-cran-vctrs-0.3.5/src/hash.c:136: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(RAW(out), &hash, sizeof(uint32_t));
data/r-cran-vctrs-0.3.5/src/names.c:292: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[buf_size];
data/r-cran-vctrs-0.3.5/src/names.c:295: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, name, size);
data/r-cran-vctrs-0.3.5/src/names.c:455: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_IOTA_SIZE];
data/r-cran-vctrs-0.3.5/src/names.c:610:1:  [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 vctrs_paste_buffer[VCTRS_PASTE_BUFFER_MAX_SIZE];
data/r-cran-vctrs-0.3.5/src/names.c:637: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(bufp, prefix, outer_len); bufp += outer_len;
data/r-cran-vctrs-0.3.5/src/names.c:649: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(bufp, inner, inner_n);
data/r-cran-vctrs-0.3.5/src/names.c:671: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[total_len];
data/r-cran-vctrs-0.3.5/src/order-radix.c:962: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(p_x_chunk, p_x, size * sizeof(*p_x));
data/r-cran-vctrs-0.3.5/src/order-radix.c:1023: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(p_x_chunk, p_x, size * sizeof(*p_x));
data/r-cran-vctrs-0.3.5/src/order-radix.c:1286: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(p_o, p_o_aux, size * sizeof(*p_o_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:1545: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(p_o, p_o_aux, size * sizeof(*p_o_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:1546: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(p_x, p_x_aux, size * sizeof(*p_x_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:1952: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(p_x_chunk, p_x, size * sizeof(*p_x));
data/r-cran-vctrs-0.3.5/src/order-radix.c:2324: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(p_o, p_o_aux, size * sizeof(*p_o_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:2325: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(p_x, p_x_aux, size * sizeof(*p_x_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:3251: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(p_x, p_x_aux, size * sizeof(*p_x_aux));
data/r-cran-vctrs-0.3.5/src/order-radix.c:3252: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(p_sizes, p_sizes_aux, size * sizeof(*p_sizes_aux));
data/r-cran-vctrs-0.3.5/src/utils.c:379: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(p_out, p_x, copy_size * sizeof(CTYPE));               \
data/r-cran-vctrs-0.3.5/src/utils.c:457:8:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
static char s3_buf[200];
data/r-cran-vctrs-0.3.5/src/utils.c:469: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, generic, gen_len); buf += gen_len;
data/r-cran-vctrs-0.3.5/src/utils.c:471: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, class, class_len); buf += class_len;
data/r-cran-vctrs-0.3.5/src/utils.c:1256: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, prefix, prefix_len);
data/r-cran-vctrs-0.3.5/src/utils.c:1734: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 msg[FMT_BUFSIZE];
data/r-cran-vctrs-0.3.5/src/utils.c:1746: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 msg[FMT_BUFSIZE];
data/r-cran-vctrs-0.3.5/src/arg.c:96: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).
  size_t len = strlen(src);
data/r-cran-vctrs-0.3.5/src/arg.c:181: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).
  size_t len = strlen(src);
data/r-cran-vctrs-0.3.5/src/c.c:229:10:  [1] (buffer) equal:
  Function does not check the second iterator for over-read conditions
  (CWE-126). This function is often discouraged by most C++ coding standards
  in favor of its safer alternatives provided since C++14. Consider using a
  form of this function that checks the second iterator before potentially
  overflowing it.
    if (!equal) {
data/r-cran-vctrs-0.3.5/src/names.c:288: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).
    int size = strlen(name);
data/r-cran-vctrs-0.3.5/src/names.c:326:11:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  int n = strlen(name);
data/r-cran-vctrs-0.3.5/src/names.c:345:11:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  int n = strlen(name);
data/r-cran-vctrs-0.3.5/src/names.c:619: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 outer_len = strlen(prefix);
data/r-cran-vctrs-0.3.5/src/names.c:622:17:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  int sep_len = strlen(sep);
data/r-cran-vctrs-0.3.5/src/names.c:647: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 inner_n = strlen(inner);
data/r-cran-vctrs-0.3.5/src/names.c:668: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).
  int total_len = 24 + strlen(prefix) + 1;
data/r-cran-vctrs-0.3.5/src/utils.c:460:17:  [1] (buffer) strlen:
  Does not handle strings that are not \0-terminated; if given one it may
  perform an over-read (it could cause a crash if unprotected) (CWE-126).
  int gen_len = strlen(generic);
data/r-cran-vctrs-0.3.5/src/utils.c:461: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 class_len = strlen(class);
data/r-cran-vctrs-0.3.5/src/utils.c:1235: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).
    int len = strlen(CHAR(*p));
data/r-cran-vctrs-0.3.5/src/utils.c:1251: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).
  int prefix_len = strlen(prefix);

ANALYSIS SUMMARY:

Hits = 43
Lines analyzed = 26401 in approximately 0.57 seconds (46449 lines/second)
Physical Source Lines of Code (SLOC) = 18986
Hits@level = [0]   4 [1]  14 [2]  28 [3]   0 [4]   1 [5]   0
Hits@level+ = [0+]  47 [1+]  43 [2+]  29 [3+]   1 [4+]   1 [5+]   0
Hits/KSLOC@level+ = [0+] 2.47551 [1+] 2.26483 [2+] 1.52744 [3+] 0.0526704 [4+] 0.0526704 [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.