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/python-cbor-1.0.0/c/cbor.h Examining data/python-cbor-1.0.0/c/cbormodule.c FINAL RESULTS: data/python-cbor-1.0.0/c/cbormodule.c:79:11: [4] (format) vfprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. ret = vfprintf(stderr, fmt, ap); data/python-cbor-1.0.0/c/cbormodule.c:287:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(parts_tail->start, blob, saux); data/python-cbor-1.0.0/c/cbormodule.c:300:7: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(allbytes + op, parts->start, parts->len); data/python-cbor-1.0.0/c/cbormodule.c:764:2: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy((void*)opos, PyBytes_AsString(retval), rlen); data/python-cbor-1.0.0/c/cbormodule.c:1239:6: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(out + pos, PyBytes_AsString(ob), len); data/python-cbor-1.0.0/c/cbormodule.c:1247:6: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(out + pos, PyBytes_AsString(utf8), len); data/python-cbor-1.0.0/c/cbormodule.c:43:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). void* (*read)(void* self, Py_ssize_t len); \ data/python-cbor-1.0.0/c/cbormodule.c:127:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t* raw = rin->read(rin, 4); data/python-cbor-1.0.0/c/cbormodule.c:145:25: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t* raw = rin->read(rin, 8); data/python-cbor-1.0.0/c/cbormodule.c:173:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t* raw = (uint8_t*)rin->read(rin, 4); data/python-cbor-1.0.0/c/cbormodule.c:183:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t* raw = (uint8_t*)rin->read(rin, 8); data/python-cbor-1.0.0/c/cbormodule.c:278:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). blob = rin->read(rin, saux); data/python-cbor-1.0.0/c/cbormodule.c:318:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). raw = rin->read(rin, aux); data/python-cbor-1.0.0/c/cbormodule.c:356:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). raw = rin->read(rin, aux); ANALYSIS SUMMARY: Hits = 14 Lines analyzed = 1567 in approximately 0.04 seconds (35807 lines/second) Physical Source Lines of Code (SLOC) = 1347 Hits@level = [0] 2 [1] 8 [2] 5 [3] 0 [4] 1 [5] 0 Hits@level+ = [0+] 16 [1+] 14 [2+] 6 [3+] 1 [4+] 1 [5+] 0 Hits/KSLOC@level+ = [0+] 11.8782 [1+] 10.3935 [2+] 4.45434 [3+] 0.74239 [4+] 0.74239 [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.