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.