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/pd-iemmatrix-0.3.2/alias/matrix_mul_line~.c
Examining data/pd-iemmatrix-0.3.2/alias/matrix_mul~.c
Examining data/pd-iemmatrix-0.3.2/alias/matrix~.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x21.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x210x3d.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x26.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x260x26.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2a.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2a0x7e.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2b.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2d.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2e0x2a.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2e0x2f.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2e0x5e.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x2f.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3a.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3c.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3c0x3c.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3c0x3d.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3d0x3d.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3e.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3e0x3d.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x3e0x3e.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x7c.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_0x7c0x7c.c
Examining data/pd-iemmatrix-0.3.2/alias/mtx_div.c
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix.c
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix.h
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix_binops.c
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix_sources.c
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix_sources.h
Examining data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c
Examining data/pd-iemmatrix-0.3.2/src/matrix.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_abs.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_add.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_and.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_atan.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_atan2.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_bessel.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_binop_generic.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_bitand.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_bitleft.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_bitor.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_bitright.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_bspline.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_check.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_cholesky.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_col.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_colon.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_concat.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_conv.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_cos.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_cumprod.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_cumsum.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_dbtopow.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_dbtorms.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_decay.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_diag.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_diegg.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_diff.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_dispersive_dline.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_distance2.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_egg.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_eig.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_ei~.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_element.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_eq.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_exp.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_eye.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_fft.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_fill.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_find.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_gauss.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_ge.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_gt.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_ifft.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_index.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_int.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_inverse.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_isequal.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_le.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_log.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_lt.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_max2.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_mean.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_min2.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_minmax.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_mul.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_mul~.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_neq.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_not.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_ones.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_or.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_pack~.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_pivot.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_pow.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_powtodb.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_print.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_prod.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/entry.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/list.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/list.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/test_list.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/vectors.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/vectors.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/zhull.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_qhull/zhull.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_qr.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_rand.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_repmat.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_resize.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_reverse.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_rfft.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_rifft.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_rmstodb.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_roll.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_row.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_scroll.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_sin.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_size.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_slice.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_sndfileread.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_sort.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/chebyshev12.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/chebyshev12.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/chebyshev12_cmd.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/legendre_a_cmd.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/sharmonics_cmd.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/sharmonics_normalization_cmd.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/legendre_a.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/legendre_a.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sharmonics.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sharmonics.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sharmonics_normalization.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sharmonics_normalization.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sph_radial.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/sph_radial.h
Examining data/pd-iemmatrix-0.3.2/src/mtx_spherical_radial.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_sub.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_sum.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_svd.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_trace.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_transpose.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_unpack~.c
Examining data/pd-iemmatrix-0.3.2/src/mtx_zeros.c

FINAL RESULTS:

data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c:653:9:  [4] (format) _snprintf:
  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.
        _snprintf
data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c:655:9:  [4] (format) snprintf:
  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.
        snprintf
data/pd-iemmatrix-0.3.2/src/matrix.c:24:10:  [4] (format) snprintf:
  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.
# define snprintf _snprintf
data/pd-iemmatrix-0.3.2/src/matrix.c:24:19:  [4] (format) _snprintf:
  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.
# define snprintf _snprintf
data/pd-iemmatrix-0.3.2/src/iemmatrix_binops.c:30: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(x->m2.atombuffer, argv, (row*col+2)*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c:138: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(x->atombuffer, argv, (row*col+2)*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c:354: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(ap, argv, col*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/iemmatrix_utility.c:650: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[MAXPDSTRING];
data/pd-iemmatrix-0.3.2/src/matrix.c:103: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 filnam[MAXPDSTRING];
data/pd-iemmatrix-0.3.2/src/matrix.c:110:13:  [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 = fopen(filnam, "w"))) {
data/pd-iemmatrix-0.3.2/src/matrix.c:169: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(x->atombuffer+2, argv, row*col*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_concat.c:118: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 (ptr_out, ptr_in1, mtx1->col * sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_concat.c:119: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 (ptr_out+mtx1->col, ptr_in2, mtx2->col * sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_concat.c:140: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 (ptr_out, ptr_in1, mtx1->col * sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_concat.c:144: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 (ptr_out, ptr_in2, mtx2->col * sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_ei~.c:150: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(x->sl, x->sl+x->bs, sizeof(t_float)*x->sd);
data/pd-iemmatrix-0.3.2/src/mtx_ei~.c:151: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(x->sr, x->sr+x->bs, sizeof(t_float)*x->sd);
data/pd-iemmatrix-0.3.2/src/mtx_ei~.c:152: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(x->sl+x->sd, x->sig_in_left, sizeof(t_float)*x->bs);
data/pd-iemmatrix-0.3.2/src/mtx_ei~.c:153: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(x->sr+x->sd, x->sig_in_right, sizeof(t_float)*x->bs);
data/pd-iemmatrix-0.3.2/src/mtx_fill.c:205: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(list_out,argv,argc*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_resize.c:77: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(x->atombuffer+2+(ROW-R-1)*c, argv+2+(ROW-R-1)*col,
data/pd-iemmatrix-0.3.2/src/mtx_row.c:63: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(x->atombuffer+2+(x->current_row-1)*x->col, argv,
data/pd-iemmatrix-0.3.2/src/mtx_row.c:68: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(x->atombuffer+2+r*x->col, argv, x->col*sizeof(t_atom));
data/pd-iemmatrix-0.3.2/src/mtx_scroll.c:31: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(x->atombuffer+2, argv+(row-rowscroll)*col,
data/pd-iemmatrix-0.3.2/src/mtx_scroll.c:33: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(x->atombuffer+2+rowscroll*col, argv,
data/pd-iemmatrix-0.3.2/src/mtx_sndfileread.c:146: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 filenamebuf[MAXPDSTRING], *filenamebufptr;
data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/chebyshev12_cmd.c:20:8:  [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).
  nmax=atoi(argv[1]);
data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/legendre_a_cmd.c:20:8:  [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).
  nmax=atoi(argv[1]);
data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/sharmonics_cmd.c:20:8:  [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).
  nmax=atoi(argv[1]);
data/pd-iemmatrix-0.3.2/src/mtx_spherical_harmonics/cmdline/sharmonics_normalization_cmd.c:20:8:  [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).
  nmax=atoi(argv[1]);
data/pd-iemmatrix-0.3.2/src/matrix.c:123: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).
    textlen = strlen(text);
data/pd-iemmatrix-0.3.2/src/matrix.c:135: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).
        textlen=strlen(text);
data/pd-iemmatrix-0.3.2/src/mtx_reverse.c:98:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    *y++ = *read;
data/pd-iemmatrix-0.3.2/src/mtx_reverse.c:111:11:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    *y = *read;

ANALYSIS SUMMARY:

Hits = 34
Lines analyzed = 18490 in approximately 0.47 seconds (39114 lines/second)
Physical Source Lines of Code (SLOC) = 13986
Hits@level = [0]  67 [1]   4 [2]  26 [3]   0 [4]   4 [5]   0
Hits@level+ = [0+] 101 [1+]  34 [2+]  30 [3+]   4 [4+]   4 [5+]   0
Hits/KSLOC@level+ = [0+] 7.22151 [1+] 2.431 [2+] 2.145 [3+] 0.286 [4+] 0.286 [5+]   0
Dot directories skipped = 2 (--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.