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-seurat-3.2.2/src/ModularityOptimizer.cpp Examining data/r-cran-seurat-3.2.2/src/data_manipulation.h Examining data/r-cran-seurat-3.2.2/src/integration.h Examining data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h Examining data/r-cran-seurat-3.2.2/src/valid_pointer.c Examining data/r-cran-seurat-3.2.2/src/integration.cpp Examining data/r-cran-seurat-3.2.2/src/data_manipulation.cpp Examining data/r-cran-seurat-3.2.2/src/snn.cpp Examining data/r-cran-seurat-3.2.2/src/RcppExports.cpp Examining data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp Examining data/r-cran-seurat-3.2.2/src/snn.h FINAL RESULTS: data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:66:71: [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. IVector Arrays2::generateRandomPermutation(int nElements, JavaRandom& random) data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:73:15: [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. int j = random.nextInt(nElements); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:482:66: [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. bool VOSClusteringTechnique::runLocalMovingAlgorithm(JavaRandom& random){ data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:508:81: [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. IVector nodePermutation = Arrays2::generateRandomPermutation(network->nNodes, random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:583:62: [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. bool VOSClusteringTechnique::runLouvainAlgorithm(JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:587:41: [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. bool update = runLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:592:63: [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. bool update2 = vosClusteringTechnique.runLouvainAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:604:90: [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. bool VOSClusteringTechnique::runIteratedLouvainAlgorithm(int maxNIterations, JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:609:34: [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. update = runLouvainAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:616:86: [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. bool VOSClusteringTechnique::runLouvainAlgorithmWithMultilevelRefinement(JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:620:41: [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. bool update = runLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:626:87: [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. bool update2 = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:632:31: [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. runLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:637:114: [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. bool VOSClusteringTechnique::runIteratedLouvainAlgorithmWithMultilevelRefinement(int maxNIterations, JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:642:58: [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. update = runLouvainAlgorithmWithMultilevelRefinement(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:649:71: [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. bool VOSClusteringTechnique::runSmartLocalMovingAlgorithm(JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:653:41: [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. bool update = runLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:664:54: [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. vosClusteringTechnique.runLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:683:68: [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. update |= vosClusteringTechnique2.runSmartLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:690:96: [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. bool VOSClusteringTechnique::runIteratedSmartLocalMovingAlgorithm(int nIterations, JavaRandom& random) { data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:693:44: [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. update |= runSmartLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:945: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. JavaRandom random(randomSeed); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:961:63: [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. update = vosClusteringTechnique.runLouvainAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:963:87: [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. update = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:965:63: [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. vosClusteringTechnique.runSmartLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:29:64: [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. IVector generateRandomPermutation(int nElements, JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:143:44: [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. bool runLocalMovingAlgorithm(JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:144:40: [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. bool runLouvainAlgorithm(JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:145:68: [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. bool runIteratedLouvainAlgorithm(int maxNIterations, JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:146:64: [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. bool runLouvainAlgorithmWithMultilevelRefinement(JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:147:92: [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. bool runIteratedLouvainAlgorithmWithMultilevelRefinement(int maxNIterations, JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:148: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. bool runSmartLocalMovingAlgorithm(JavaRandom& random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.h:149:74: [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. bool runIteratedSmartLocalMovingAlgorithm(int nIterations, JavaRandom& random); data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:104:14: [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. JavaRandom random(randomSeed); data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:122:61: [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. update = vosClusteringTechnique.runLouvainAlgorithm(random); data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:124:85: [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. update = vosClusteringTechnique.runLouvainAlgorithmWithMultilevelRefinement(random); data/r-cran-seurat-3.2.2/src/RModularityOptimizer.cpp:126:61: [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. vosClusteringTechnique.runSmartLocalMovingAlgorithm(random); data/r-cran-seurat-3.2.2/src/ModularityOptimizer.cpp:808:5: [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). f.open(fname, std::ios::in); data/r-cran-seurat-3.2.2/src/snn.cpp:47:10: [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). output.open(filename); ANALYSIS SUMMARY: Hits = 39 Lines analyzed = 2518 in approximately 0.09 seconds (27207 lines/second) Physical Source Lines of Code (SLOC) = 2127 Hits@level = [0] 10 [1] 0 [2] 2 [3] 37 [4] 0 [5] 0 Hits@level+ = [0+] 49 [1+] 39 [2+] 39 [3+] 37 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 23.0371 [1+] 18.3357 [2+] 18.3357 [3+] 17.3954 [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.