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/rust-ring-0.16.9/crypto/constant_time_test.c Examining data/rust-ring-0.16.9/crypto/cpu-intel.c Examining data/rust-ring-0.16.9/crypto/crypto.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/bn/generic.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/bn/internal.h Examining data/rust-ring-0.16.9/crypto/fipsmodule/bn/montgomery.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/bn/montgomery_inv.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/ecp_nistz.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/ecp_nistz.h Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/ecp_nistz256.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/ecp_nistz256.h Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/ecp_nistz384.h Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/gfp_p256.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/ec/gfp_p384.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/modes/gcm.c Examining data/rust-ring-0.16.9/crypto/fipsmodule/modes/internal.h Examining data/rust-ring-0.16.9/crypto/internal.h Examining data/rust-ring-0.16.9/crypto/limbs/limbs.c Examining data/rust-ring-0.16.9/crypto/limbs/limbs.h Examining data/rust-ring-0.16.9/crypto/mem.c Examining data/rust-ring-0.16.9/include/GFp/aes.h Examining data/rust-ring-0.16.9/include/GFp/arm_arch.h Examining data/rust-ring-0.16.9/include/GFp/base.h Examining data/rust-ring-0.16.9/include/GFp/cpu.h Examining data/rust-ring-0.16.9/include/GFp/mem.h Examining data/rust-ring-0.16.9/include/GFp/type_check.h Examining data/rust-ring-0.16.9/third_party/fiat/curve25519.c Examining data/rust-ring-0.16.9/third_party/fiat/curve25519_32.h Examining data/rust-ring-0.16.9/third_party/fiat/curve25519_64.h Examining data/rust-ring-0.16.9/third_party/fiat/curve25519_tables.h Examining data/rust-ring-0.16.9/third_party/fiat/internal.h FINAL RESULTS: data/rust-ring-0.16.9/third_party/fiat/curve25519.c:799:10: [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. signed char e[64]; data/rust-ring-0.16.9/third_party/fiat/curve25519.c:888:10: [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. signed char aslide[256]; data/rust-ring-0.16.9/third_party/fiat/curve25519.c:889:10: [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. signed char bslide[256]; data/rust-ring-0.16.9/third_party/fiat/curve25519.c:683:16: [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 uint8_t equal(signed char b, signed char c) { data/rust-ring-0.16.9/third_party/fiat/curve25519.c:741:33: [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. cmov(&e, &multiples[j-1], equal(index, j)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:773:35: [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. cmov(t, &k25519Precomp[pos][0], equal(babs, 1)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:774:35: [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. cmov(t, &k25519Precomp[pos][1], equal(babs, 2)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:775:35: [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. cmov(t, &k25519Precomp[pos][2], equal(babs, 3)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:776:35: [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. cmov(t, &k25519Precomp[pos][3], equal(babs, 4)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:777:35: [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. cmov(t, &k25519Precomp[pos][4], equal(babs, 5)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:778:35: [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. cmov(t, &k25519Precomp[pos][5], equal(babs, 6)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:779:35: [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. cmov(t, &k25519Precomp[pos][6], equal(babs, 7)); data/rust-ring-0.16.9/third_party/fiat/curve25519.c:780:35: [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. cmov(t, &k25519Precomp[pos][7], equal(babs, 8)); ANALYSIS SUMMARY: Hits = 13 Lines analyzed = 14858 in approximately 0.47 seconds (31788 lines/second) Physical Source Lines of Code (SLOC) = 12050 Hits@level = [0] 0 [1] 10 [2] 3 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 13 [1+] 13 [2+] 3 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.07884 [1+] 1.07884 [2+] 0.248963 [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.