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/pynac-0.7.26/ginac/add.cpp
Examining data/pynac-0.7.26/ginac/add.h
Examining data/pynac-0.7.26/ginac/archive.cpp
Examining data/pynac-0.7.26/ginac/archive.h
Examining data/pynac-0.7.26/ginac/assertion.h
Examining data/pynac-0.7.26/ginac/assume.cpp
Examining data/pynac-0.7.26/ginac/assume.h
Examining data/pynac-0.7.26/ginac/basic.cpp
Examining data/pynac-0.7.26/ginac/basic.h
Examining data/pynac-0.7.26/ginac/class_info.h
Examining data/pynac-0.7.26/ginac/cmatcher.cpp
Examining data/pynac-0.7.26/ginac/cmatcher.h
Examining data/pynac-0.7.26/ginac/compiler.h
Examining data/pynac-0.7.26/ginac/constant.cpp
Examining data/pynac-0.7.26/ginac/constant.h
Examining data/pynac-0.7.26/ginac/container.h
Examining data/pynac-0.7.26/ginac/context.cpp
Examining data/pynac-0.7.26/ginac/context.h
Examining data/pynac-0.7.26/ginac/ex.cpp
Examining data/pynac-0.7.26/ginac/ex.h
Examining data/pynac-0.7.26/ginac/ex_utils.h
Parsing failed to find end of parameter list; semicolon terminated it in (ev.begin(), ev.end(), iv.begin(),
        [](ex e, int i) -> bool { return e.is_equal(numeric(i)); } ); }

inline const ex exvec_max(const exvector& v)
{
        numeric max;
        bool is_set = fa
Examining data/pynac-0.7.26/ginac/expair.cpp
Examining data/pynac-0.7.26/ginac/expair.h
Examining data/pynac-0.7.26/ginac/expairseq.cpp
Examining data/pynac-0.7.26/ginac/expairseq.h
Examining data/pynac-0.7.26/ginac/exprseq.cpp
Examining data/pynac-0.7.26/ginac/exprseq.h
Examining data/pynac-0.7.26/ginac/extern_templates.h
Examining data/pynac-0.7.26/ginac/fderivative.cpp
Examining data/pynac-0.7.26/ginac/fderivative.h
Examining data/pynac-0.7.26/ginac/flags.h
Examining data/pynac-0.7.26/ginac/function.h
Examining data/pynac-0.7.26/ginac/function_info.cpp
Examining data/pynac-0.7.26/ginac/ginac.h
Examining data/pynac-0.7.26/ginac/infinity.cpp
Examining data/pynac-0.7.26/ginac/infinity.h
Examining data/pynac-0.7.26/ginac/infoflagbase.cpp
Examining data/pynac-0.7.26/ginac/infoflagbase.h
Examining data/pynac-0.7.26/ginac/inifcns.cpp
Examining data/pynac-0.7.26/ginac/inifcns.h
Examining data/pynac-0.7.26/ginac/inifcns_comb.cpp
Examining data/pynac-0.7.26/ginac/inifcns_gamma.cpp
Examining data/pynac-0.7.26/ginac/inifcns_hyperb.cpp
Examining data/pynac-0.7.26/ginac/inifcns_hyperg.cpp
Examining data/pynac-0.7.26/ginac/inifcns_nstdsums.cpp
Examining data/pynac-0.7.26/ginac/inifcns_orthopoly.cpp
Examining data/pynac-0.7.26/ginac/inifcns_trans.cpp
Examining data/pynac-0.7.26/ginac/inifcns_trig.cpp
Examining data/pynac-0.7.26/ginac/inifcns_zeta.cpp
Examining data/pynac-0.7.26/ginac/lst.cpp
Examining data/pynac-0.7.26/ginac/lst.h
Examining data/pynac-0.7.26/ginac/matrix.cpp
Examining data/pynac-0.7.26/ginac/matrix.h
Examining data/pynac-0.7.26/ginac/mpoly-giac.cpp
Examining data/pynac-0.7.26/ginac/mpoly-ginac.cpp
Examining data/pynac-0.7.26/ginac/mpoly-singular.cpp
Examining data/pynac-0.7.26/ginac/mpoly.cpp
Examining data/pynac-0.7.26/ginac/mpoly.h
Examining data/pynac-0.7.26/ginac/mul.cpp
Examining data/pynac-0.7.26/ginac/mul.h
Examining data/pynac-0.7.26/ginac/normal.cpp
Examining data/pynac-0.7.26/ginac/normal.h
Examining data/pynac-0.7.26/ginac/numeric.h
Examining data/pynac-0.7.26/ginac/operators.cpp
Examining data/pynac-0.7.26/ginac/operators.h
Examining data/pynac-0.7.26/ginac/optional.hpp
Examining data/pynac-0.7.26/ginac/order.cpp
Examining data/pynac-0.7.26/ginac/order.h
Examining data/pynac-0.7.26/ginac/power.cpp
Examining data/pynac-0.7.26/ginac/power.h
Examining data/pynac-0.7.26/ginac/print.cpp
Examining data/pynac-0.7.26/ginac/print.h
Examining data/pynac-0.7.26/ginac/pseries.cpp
Examining data/pynac-0.7.26/ginac/pseries.h
Examining data/pynac-0.7.26/ginac/ptr.h
Examining data/pynac-0.7.26/ginac/py_funcs.cpp
Examining data/pynac-0.7.26/ginac/py_funcs.h
Examining data/pynac-0.7.26/ginac/registrar.cpp
Examining data/pynac-0.7.26/ginac/registrar.h
Examining data/pynac-0.7.26/ginac/relational.cpp
Examining data/pynac-0.7.26/ginac/relational.h
Examining data/pynac-0.7.26/ginac/remember.cpp
Examining data/pynac-0.7.26/ginac/remember.h
Examining data/pynac-0.7.26/ginac/sum.cpp
Examining data/pynac-0.7.26/ginac/sum.h
Examining data/pynac-0.7.26/ginac/symbol.cpp
Examining data/pynac-0.7.26/ginac/symbol.h
Examining data/pynac-0.7.26/ginac/templates.cpp
Examining data/pynac-0.7.26/ginac/templates.h
Examining data/pynac-0.7.26/ginac/tostring.h
Examining data/pynac-0.7.26/ginac/upoly-ginac.cpp
Examining data/pynac-0.7.26/ginac/upoly.h
Examining data/pynac-0.7.26/ginac/useries-flint.h
Examining data/pynac-0.7.26/ginac/useries.cpp
Examining data/pynac-0.7.26/ginac/useries.h
Examining data/pynac-0.7.26/ginac/utils.cpp
Examining data/pynac-0.7.26/ginac/utils.h
Examining data/pynac-0.7.26/ginac/wildcard.cpp
Examining data/pynac-0.7.26/ginac/wildcard.h
Examining data/pynac-0.7.26/ginac/function.cpp
Examining data/pynac-0.7.26/ginac/numeric.cpp

FINAL RESULTS:

data/pynac-0.7.26/ginac/sum.cpp:410:14:  [3] (random) srand:
  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.
        std::srand(std::time(0));
data/pynac-0.7.26/ginac/optional.hpp:593:31:  [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.
    typedef struct { unsigned char data[ sizeof(value_type) ]; } aligned_storage_t;
data/pynac-0.7.26/ginac/assume.cpp:22:45:  [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 (r.the_operator() == relational::equal
data/pynac-0.7.26/ginac/assume.cpp:46:45:  [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 (r.the_operator() == relational::equal
data/pynac-0.7.26/ginac/ex.cpp:295:6:  [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/pynac-0.7.26/ginac/ex.cpp:302:9:  [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.
	return equal;
data/pynac-0.7.26/ginac/ex_utils.h:23:15:  [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.
{ return std::equal(ev.begin(), ev.end(), iv.begin(),
data/pynac-0.7.26/ginac/infinity.cpp:273:26:  [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.
        case relational::equal:
data/pynac-0.7.26/ginac/operators.cpp:232:38:  [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.
	return relational(lh,rh,relational::equal);
data/pynac-0.7.26/ginac/relational.cpp:89:19:  [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.
	case relational::equal:
data/pynac-0.7.26/ginac/relational.cpp:119:19:  [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.
	case relational::equal:
data/pynac-0.7.26/ginac/relational.cpp:186:29:  [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.
                return o == equal;
data/pynac-0.7.26/ginac/relational.cpp:263:14:  [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.
        case equal:
data/pynac-0.7.26/ginac/relational.cpp:317:14:  [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.
        case equal:
data/pynac-0.7.26/ginac/relational.cpp:380:26:  [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.
        case relational::equal:
data/pynac-0.7.26/ginac/relational.cpp:407:8:  [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.
		case equal:
data/pynac-0.7.26/ginac/relational.cpp:447:55:  [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 (inf.is_unsigned_infinity() and o!=equal and o!=not_equal)
data/pynac-0.7.26/ginac/relational.cpp:460:8:  [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.
		case equal:
data/pynac-0.7.26/ginac/relational.cpp:510:14:  [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.
        case equal:
data/pynac-0.7.26/ginac/relational.h:40:3:  [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.
		equal,
data/pynac-0.7.26/ginac/relational.h:57:46:  [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.
	relational(ex  lhs, ex  rhs, operators oper=equal);

ANALYSIS SUMMARY:

Hits = 21
Lines analyzed = 48305 in approximately 1.10 seconds (43942 lines/second)
Physical Source Lines of Code (SLOC) = 32196
Hits@level = [0]   0 [1]  19 [2]   1 [3]   1 [4]   0 [5]   0
Hits@level+ = [0+]  21 [1+]  21 [2+]   2 [3+]   1 [4+]   0 [5+]   0
Hits/KSLOC@level+ = [0+] 0.652255 [1+] 0.652255 [2+] 0.0621195 [3+] 0.0310598 [4+]   0 [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.