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-phangorn-2.5.5/src/fitch.c Examining data/r-cran-phangorn-2.5.5/src/phangorn_help.cpp Examining data/r-cran-phangorn-2.5.5/src/sprdist.c Examining data/r-cran-phangorn-2.5.5/src/sankoff.c Examining data/r-cran-phangorn-2.5.5/src/ml.c Examining data/r-cran-phangorn-2.5.5/src/init.c Examining data/r-cran-phangorn-2.5.5/src/RcppExports.cpp Examining data/r-cran-phangorn-2.5.5/src/phangorn.c Examining data/r-cran-phangorn-2.5.5/src/dist.c FINAL RESULTS: data/r-cran-phangorn-2.5.5/src/sprdist.c:251:10: [1] (buffer) mismatch: 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. while (mismatch) { data/r-cran-phangorn-2.5.5/src/sprdist.c:261:10: [1] (buffer) mismatch: 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 (!mismatch) return split->spr; data/r-cran-phangorn-2.5.5/src/sprdist.c:937:39: [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. for (i=0; (i < b1->n->ints - 1) && (equal); i++) if (b1->bs[i] != b2->bs[i]) equal = false; data/r-cran-phangorn-2.5.5/src/sprdist.c:938: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. if ((equal) && ((b1->bs[i] & b1->n->mask) != (b2->bs[i] & b2->n->mask))) equal = false; data/r-cran-phangorn-2.5.5/src/sprdist.c:939:7: [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) return true; /* the biparitions are already the same, without flipping the bits */ ANALYSIS SUMMARY: Hits = 5 Lines analyzed = 3961 in approximately 0.14 seconds (27327 lines/second) Physical Source Lines of Code (SLOC) = 3127 Hits@level = [0] 0 [1] 5 [2] 0 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 5 [1+] 5 [2+] 0 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.59898 [1+] 1.59898 [2+] 0 [3+] 0 [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.