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/simrisc-13.03.00/analysis/run.cc Examining data/simrisc-13.03.00/analysis/requirebase.cc Examining data/simrisc-13.03.00/analysis/analysis.h Examining data/simrisc-13.03.00/analysis/analysis1.cc Examining data/simrisc-13.03.00/beir7/data.cc Examining data/simrisc-13.03.00/beir7/writeparameters.cc Examining data/simrisc-13.03.00/beir7/beir7.h Examining data/simrisc-13.03.00/beir7/beir71.cc Examining data/simrisc-13.03.00/conffile/conffile.h Examining data/simrisc-13.03.00/conffile/conffile1.cc Examining data/simrisc-13.03.00/conffile/value1.cc Examining data/simrisc-13.03.00/conffile/value2.cc Examining data/simrisc-13.03.00/costs/data.cc Examining data/simrisc-13.03.00/costs/costs.h Examining data/simrisc-13.03.00/costs/writeparameters.cc Examining data/simrisc-13.03.00/costs/discount.cc Examining data/simrisc-13.03.00/costs/costs1.cc Examining data/simrisc-13.03.00/costs/cost.cc Examining data/simrisc-13.03.00/densities/data.cc Examining data/simrisc-13.03.00/densities/densities1.cc Examining data/simrisc-13.03.00/densities/biradsidx.cc Examining data/simrisc-13.03.00/densities/densities.h Examining data/simrisc-13.03.00/densities/indexof.cc Examining data/simrisc-13.03.00/densities/insertinto.cc Examining data/simrisc-13.03.00/densities/indices.cc Examining data/simrisc-13.03.00/densities/writeparameters.cc Examining data/simrisc-13.03.00/densities/add.cc Examining data/simrisc-13.03.00/distribution/opinsert.cc Examining data/simrisc-13.03.00/distribution/extract.cc Examining data/simrisc-13.03.00/distribution/distribution.h Examining data/simrisc-13.03.00/enums/enums.h Examining data/simrisc-13.03.00/error/opfun.cc Examining data/simrisc-13.03.00/error/data.cc Examining data/simrisc-13.03.00/error/msg.cc Examining data/simrisc-13.03.00/error/error.h Examining data/simrisc-13.03.00/globals/setprecision.cc Examining data/simrisc-13.03.00/globals/weakcompare.cc Examining data/simrisc-13.03.00/globals/data.cc Examining data/simrisc-13.03.00/globals/xlat.cc Examining data/simrisc-13.03.00/globals/equal.cc Examining data/simrisc-13.03.00/globals/checkstarage.cc Examining data/simrisc-13.03.00/globals/iszero.cc Examining data/simrisc-13.03.00/globals/xlatdist.cc Examining data/simrisc-13.03.00/globals/distname.cc Examining data/simrisc-13.03.00/globals/globals.h Examining data/simrisc-13.03.00/globals/findage.cc Examining data/simrisc-13.03.00/growth/growth1.cc Examining data/simrisc-13.03.00/growth/data.cc Examining data/simrisc-13.03.00/growth/writedt.cc Examining data/simrisc-13.03.00/growth/refresh.cc Examining data/simrisc-13.03.00/growth/parse.cc Examining data/simrisc-13.03.00/growth/writediameter.cc Examining data/simrisc-13.03.00/growth/growth.h Examining data/simrisc-13.03.00/growth/writeparameters.cc Examining data/simrisc-13.03.00/growth/agegroup.cc Examining data/simrisc-13.03.00/incidence/data.cc Examining data/simrisc-13.03.00/incidence/addprobabilities.cc Examining data/simrisc-13.03.00/incidence/incidence.h Examining data/simrisc-13.03.00/incidence/refresh.cc Examining data/simrisc-13.03.00/incidence/settumorrisk2.cc Examining data/simrisc-13.03.00/incidence/incidence1.cc Examining data/simrisc-13.03.00/incidence/set.cc Examining data/simrisc-13.03.00/incidence/settumorrisk1.cc Examining data/simrisc-13.03.00/incidence/carrier.cc Examining data/simrisc-13.03.00/incidence/writecarrier.cc Examining data/simrisc-13.03.00/incidence/writeparameters.cc Examining data/simrisc-13.03.00/incidence/add.cc Examining data/simrisc-13.03.00/loop/maybedetect.cc Examining data/simrisc-13.03.00/loop/fillzeroes.cc Examining data/simrisc-13.03.00/loop/intervalcancer.cc Examining data/simrisc-13.03.00/loop/headerdata.cc Examining data/simrisc-13.03.00/loop/data.cc Examining data/simrisc-13.03.00/loop/postscreen.cc Examining data/simrisc-13.03.00/loop/prescreen.cc Examining data/simrisc-13.03.00/loop/headerrounds.cc Examining data/simrisc-13.03.00/loop/naturaldeathage.cc Examining data/simrisc-13.03.00/loop/loop.h Examining data/simrisc-13.03.00/loop/checkseed.cc Examining data/simrisc-13.03.00/loop/sensitivity1.cc Examining data/simrisc-13.03.00/loop/leaving.cc Examining data/simrisc-13.03.00/loop/writesensitivity.cc Examining data/simrisc-13.03.00/loop/screening.cc Examining data/simrisc-13.03.00/loop/ncases.cc Examining data/simrisc-13.03.00/loop/labels.cc Examining data/simrisc-13.03.00/loop/headersensitivity.cc Examining data/simrisc-13.03.00/loop/addcost.cc Examining data/simrisc-13.03.00/loop/maybefalsepositive.cc Examining data/simrisc-13.03.00/loop/writerounds.cc Examining data/simrisc-13.03.00/loop/initialize.cc Examining data/simrisc-13.03.00/loop/screen.cc Examining data/simrisc-13.03.00/loop/loop1.cc Examining data/simrisc-13.03.00/loop/resetcounters.cc Examining data/simrisc-13.03.00/loop/womenloop.cc Examining data/simrisc-13.03.00/loop/writedata.cc Examining data/simrisc-13.03.00/loop/setstatus.cc Examining data/simrisc-13.03.00/loop/characteristics.cc Examining data/simrisc-13.03.00/loop/use.cc Examining data/simrisc-13.03.00/loop/parameters.cc Examining data/simrisc-13.03.00/loop/pretumordeath.cc Examining data/simrisc-13.03.00/loop/iterate.cc Examining data/simrisc-13.03.00/main.cc Examining data/simrisc-13.03.00/mammo/vspecificity.cc Examining data/simrisc-13.03.00/mammo/vdose1.cc Examining data/simrisc-13.03.00/mammo/specificityhandler.cc Examining data/simrisc-13.03.00/mammo/betahandler.cc Examining data/simrisc-13.03.00/mammo/data.cc Examining data/simrisc-13.03.00/mammo/dosehandler.cc Examining data/simrisc-13.03.00/mammo/mammo.h Examining data/simrisc-13.03.00/mammo/vdose2.cc Examining data/simrisc-13.03.00/mammo/insertbeta.cc Examining data/simrisc-13.03.00/mammo/mammo1.cc Examining data/simrisc-13.03.00/mammo/destructor.cc Examining data/simrisc-13.03.00/mammo/vinitialize.cc Examining data/simrisc-13.03.00/mammo/vinsert.cc Examining data/simrisc-13.03.00/mammo/vsensitivity.cc Examining data/simrisc-13.03.00/mammotomo/vspecificity.cc Examining data/simrisc-13.03.00/mammotomo/readspecifications.cc Examining data/simrisc-13.03.00/mammotomo/vdose1.cc Examining data/simrisc-13.03.00/mammotomo/birads.cc Examining data/simrisc-13.03.00/mammotomo/mammotomo1.cc Examining data/simrisc-13.03.00/mammotomo/vdose2.cc Examining data/simrisc-13.03.00/mammotomo/destructor.cc Examining data/simrisc-13.03.00/mammotomo/vinitialize.cc Examining data/simrisc-13.03.00/mammotomo/vinsert.cc Examining data/simrisc-13.03.00/mammotomo/vsensitivity.cc Examining data/simrisc-13.03.00/mammotomo/mammotomo.h Examining data/simrisc-13.03.00/modalities/data.cc Examining data/simrisc-13.03.00/modalities/mammo.cc Examining data/simrisc-13.03.00/modalities/tomo.cc Examining data/simrisc-13.03.00/modalities/writeparameters.cc Examining data/simrisc-13.03.00/modalities/destructor.cc Examining data/simrisc-13.03.00/modalities/modalities1.cc Examining data/simrisc-13.03.00/modalities/roundheaders.cc Examining data/simrisc-13.03.00/modalities/writerounds.cc Examining data/simrisc-13.03.00/modalities/mri.cc Examining data/simrisc-13.03.00/modalities/resetcounters.cc Examining data/simrisc-13.03.00/modalities/modalities.h Examining data/simrisc-13.03.00/modalities/use.cc Examining data/simrisc-13.03.00/modbase/doublehandler.cc Examining data/simrisc-13.03.00/modbase/modbase1.cc Examining data/simrisc-13.03.00/modbase/data.cc Examining data/simrisc-13.03.00/modbase/costhandler.cc Examining data/simrisc-13.03.00/modbase/specificities.cc Examining data/simrisc-13.03.00/modbase/opinsert.cc Examining data/simrisc-13.03.00/modbase/insertspecificity.cc Examining data/simrisc-13.03.00/modbase/configure.cc Examining data/simrisc-13.03.00/modbase/setbit.cc Examining data/simrisc-13.03.00/modbase/destructor.cc Examining data/simrisc-13.03.00/modbase/insertbirads.cc Examining data/simrisc-13.03.00/modbase/resetcounters.cc Examining data/simrisc-13.03.00/modbase/modbase.h Examining data/simrisc-13.03.00/modbase/addconfigline.cc Examining data/simrisc-13.03.00/mri/vspecificity.cc Examining data/simrisc-13.03.00/mri/doublehandler.cc Examining data/simrisc-13.03.00/mri/vdose1.cc Examining data/simrisc-13.03.00/mri/specificityhandler.cc Examining data/simrisc-13.03.00/mri/data.cc Examining data/simrisc-13.03.00/mri/sensitivityhandler.cc Examining data/simrisc-13.03.00/mri/vdose2.cc Examining data/simrisc-13.03.00/mri/mri.h Examining data/simrisc-13.03.00/mri/destructor.cc Examining data/simrisc-13.03.00/mri/vinsert.cc Examining data/simrisc-13.03.00/mri/mri1.cc Examining data/simrisc-13.03.00/mri/vsensitivity.cc Examining data/simrisc-13.03.00/options/instance.cc Examining data/simrisc-13.03.00/options/data.cc Examining data/simrisc-13.03.00/options/replaceplus.cc Examining data/simrisc-13.03.00/options/naturaldeathage.cc Examining data/simrisc-13.03.00/options/options1.cc Examining data/simrisc-13.03.00/options/tumorage.cc Examining data/simrisc-13.03.00/options/alter.cc Examining data/simrisc-13.03.00/options/setconfig.cc Examining data/simrisc-13.03.00/options/lastcase.cc Examining data/simrisc-13.03.00/options/options.h Examining data/simrisc-13.03.00/options/replacehome.cc Examining data/simrisc-13.03.00/options/setfile.cc Examining data/simrisc-13.03.00/options/setbase1.cc Examining data/simrisc-13.03.00/options/deathage.cc Examining data/simrisc-13.03.00/options/settumorage.cc Examining data/simrisc-13.03.00/options/setbase2.cc Examining data/simrisc-13.03.00/options/inspect.cc Examining data/simrisc-13.03.00/random/data.cc Examining data/simrisc-13.03.00/random/normal.cc Examining data/simrisc-13.03.00/random/reset.cc Examining data/simrisc-13.03.00/random/lognormal.cc Examining data/simrisc-13.03.00/random/random.h Examining data/simrisc-13.03.00/random/uniform.cc Examining data/simrisc-13.03.00/random/exponential.cc Examining data/simrisc-13.03.00/round/round.h Examining data/simrisc-13.03.00/round/opinsert.cc Examining data/simrisc-13.03.00/round/extract.cc Examining data/simrisc-13.03.00/scenario/setvalue.cc Examining data/simrisc-13.03.00/scenario/find.cc Examining data/simrisc-13.03.00/scenario/error.cc Examining data/simrisc-13.03.00/scenario/data.cc Examining data/simrisc-13.03.00/scenario/open.cc Examining data/simrisc-13.03.00/scenario/end.cc Examining data/simrisc-13.03.00/scenario/scenario1.cc Examining data/simrisc-13.03.00/scenario/scenario.h Examining data/simrisc-13.03.00/scenario/value.cc Examining data/simrisc-13.03.00/scenario/lines.cc Examining data/simrisc-13.03.00/scenario/replacedollar.cc Examining data/simrisc-13.03.00/scenario/outstream.cc Examining data/simrisc-13.03.00/scenario/alteroptions.cc Examining data/simrisc-13.03.00/scenario/setspread.cc Examining data/simrisc-13.03.00/scenario/writeparameters.cc Examining data/simrisc-13.03.00/scenario/setvalues.cc Examining data/simrisc-13.03.00/scenario/setseedtype.cc Examining data/simrisc-13.03.00/screening/data.cc Examining data/simrisc-13.03.00/screening/ages.cc Examining data/simrisc-13.03.00/screening/set1.cc Examining data/simrisc-13.03.00/screening/setsystematicerror.cc Examining data/simrisc-13.03.00/screening/set2.cc Examining data/simrisc-13.03.00/screening/screening.h Examining data/simrisc-13.03.00/screening/setattendancerate.cc Examining data/simrisc-13.03.00/screening/addround.cc Examining data/simrisc-13.03.00/screening/radiationrisk.cc Examining data/simrisc-13.03.00/screening/writeparameters.cc Examining data/simrisc-13.03.00/screening/screening1.cc Examining data/simrisc-13.03.00/screening/beir7err.cc Examining data/simrisc-13.03.00/screening/setrounds.cc Examining data/simrisc-13.03.00/simulator/endofspecs.cc Examining data/simrisc-13.03.00/simulator/run.cc Examining data/simrisc-13.03.00/simulator/fileanalysis.cc Examining data/simrisc-13.03.00/simulator/setanalysissource.cc Examining data/simrisc-13.03.00/simulator/simulator1.cc Examining data/simrisc-13.03.00/simulator/cmdlineanalysis.cc Examining data/simrisc-13.03.00/simulator/simulator.h Examining data/simrisc-13.03.00/spread/refresh.cc Examining data/simrisc-13.03.00/spread/spread.h Examining data/simrisc-13.03.00/survival/data.cc Examining data/simrisc-13.03.00/survival/refresh.cc Examining data/simrisc-13.03.00/survival/survival1.cc Examining data/simrisc-13.03.00/survival/writeparameters.cc Examining data/simrisc-13.03.00/survival/survival.h Examining data/simrisc-13.03.00/tomo/vspecificity.cc Examining data/simrisc-13.03.00/tomo/vdose1.cc Examining data/simrisc-13.03.00/tomo/specificityhandler.cc Examining data/simrisc-13.03.00/tomo/data.cc Examining data/simrisc-13.03.00/tomo/sensitivityhandler.cc Examining data/simrisc-13.03.00/tomo/tomo.h Examining data/simrisc-13.03.00/tomo/dosehandler.cc Examining data/simrisc-13.03.00/tomo/vdose2.cc Examining data/simrisc-13.03.00/tomo/destructor.cc Examining data/simrisc-13.03.00/tomo/vinitialize.cc Examining data/simrisc-13.03.00/tomo/tomo1.cc Examining data/simrisc-13.03.00/tomo/vinsert.cc Examining data/simrisc-13.03.00/tomo/vsensitivity.cc Examining data/simrisc-13.03.00/tumor/data.cc Examining data/simrisc-13.03.00/tumor/check.cc Examining data/simrisc-13.03.00/tumor/functionf.cc Examining data/simrisc-13.03.00/tumor/tumor.h Examining data/simrisc-13.03.00/tumor/reset.cc Examining data/simrisc-13.03.00/tumor/tumor1.cc Examining data/simrisc-13.03.00/tumor/tumorage.cc Examining data/simrisc-13.03.00/tumor/functionq.cc Examining data/simrisc-13.03.00/tumor/volume.cc Examining data/simrisc-13.03.00/tumor/setdeathage.cc Examining data/simrisc-13.03.00/tumor/functionz.cc Examining data/simrisc-13.03.00/tumor/writedata.cc Examining data/simrisc-13.03.00/tumor/characteristics.cc Examining data/simrisc-13.03.00/tumorinfo/data.cc Examining data/simrisc-13.03.00/tumorinfo/refresh.cc Examining data/simrisc-13.03.00/tumorinfo/cumtotalrisk.cc Examining data/simrisc-13.03.00/tumorinfo/writeparameters.cc Examining data/simrisc-13.03.00/tumorinfo/tumorinfo.h Examining data/simrisc-13.03.00/tumorinfo/tumorinfo1.cc Examining data/simrisc-13.03.00/typedefs/typedefs.h Examining data/simrisc-13.03.00/usage.cc Examining data/simrisc-13.03.00/version.cc Examining data/simrisc-13.03.00/VERSION.h Examining data/simrisc-13.03.00/vsd/vsd.h Examining data/simrisc-13.03.00/vsd/opextract.cc FINAL RESULTS: data/simrisc-13.03.00/options/options1.cc:10:20: [3] (buffer) getenv: Environment variables are untrustable input if they can be set by an attacker. They can have any content and length, and the same variable can be set more than once (CWE-807, CWE-20). Check environment variables carefully before using them. if (char *cp = getenv("HOME"); cp) data/simrisc-13.03.00/scenario/outstream.cc:10:13: [3] (random) setstate: 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. ret.setstate(ios::failbit); data/simrisc-13.03.00/spread/refresh.cc:16:27: [3] (random) random: 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. return orgValue + random.normal() * spread; data/simrisc-13.03.00/spread/refresh.cc:19:16: [3] (random) random: 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. return random.logNormal(orgValue, spread); data/simrisc-13.03.00/spread/refresh.cc:22:37: [3] (random) random: 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. return orgValue + spread * (random.uniform() - .5); data/simrisc-13.03.00/spread/refresh.cc:25:27: [3] (random) random: 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. return orgValue + random.exponential(orgValue); data/simrisc-13.03.00/tumor/reset.cc:30:19: [3] (random) random: 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. d_pSurvival = random.uniform(); data/simrisc-13.03.00/tumor/reset.cc:34:22: [3] (random) random: 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. d_doublingDays = random.logNormal(d_growth.group(idx).mean().value(), data/simrisc-13.03.00/tumor/reset.cc:39:20: [3] (random) random: 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. d_selfDetect = random.logNormal(d_growth.selfMu().value(), data/simrisc-13.03.00/tumor/tumorage.cc:18:49: [3] (random) random: 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. d_age = findAge(d_tumorInfo.cumTotalRisk(), random.uniform()); data/simrisc-13.03.00/tumor/tumorage.cc:29:5: [3] (random) random: 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. random.uniform(); // extra calls to synchronize the data/simrisc-13.03.00/tumor/tumorage.cc:30:5: [3] (random) random: 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. random.logNormal(0, 0); // random generator between data/simrisc-13.03.00/tumor/tumorage.cc:31:5: [3] (random) random: 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. random.logNormal(0, 0); // tumor and no tumor states data/simrisc-13.03.00/vsd/opextract.cc:26:12: [3] (random) setstate: 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. in.setstate(ios::failbit); data/simrisc-13.03.00/scenario/open.cc:4:20: [2] (misc) open: 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). ofstream Scenario::open(string const &fname) data/simrisc-13.03.00/scenario/outstream.cc:12:15: [2] (misc) open: 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). ret = open(replaceDollar(fname, idx)); data/simrisc-13.03.00/scenario/scenario.h:120:30: [2] (misc) open: 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). static std::ofstream open(std::string const &fname); data/simrisc-13.03.00/densities/add.cc:21:22: [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. not Globals::equal(density.d_beginAge, d_densities.back().d_endAge) data/simrisc-13.03.00/densities/add.cc:41:22: [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 (not Globals::equal(cumProb, 1.0)) data/simrisc-13.03.00/globals/equal.cc:5: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. bool Globals::equal(double value1, double value2) data/simrisc-13.03.00/globals/globals.h:34:21: [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. static bool equal(double value1, double value2); data/simrisc-13.03.00/mammotomo/readspecifications.cc:44: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. not Globals::equal(spec.d_beginAge, d_spec.back().d_endAge) data/simrisc-13.03.00/modbase/specificities.cc:37: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. not Globals::equal(spec.d_beginAge, dest->back().d_endAge) ANALYSIS SUMMARY: Hits = 23 Lines analyzed = 6692 in approximately 0.20 seconds (34276 lines/second) Physical Source Lines of Code (SLOC) = 4254 Hits@level = [0] 0 [1] 6 [2] 3 [3] 14 [4] 0 [5] 0 Hits@level+ = [0+] 23 [1+] 23 [2+] 17 [3+] 14 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 5.40668 [1+] 5.40668 [2+] 3.99624 [3+] 3.29102 [4+] 0 [5+] 0 Symlinks skipped = 8 (--allowlink overrides but see doc for security issue) 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.