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/libzmf-0.0.2/inc/libzmf/ZMFDocument.h Examining data/libzmf-0.0.2/inc/libzmf/libzmf.h Examining data/libzmf-0.0.2/src/lib/BMIHeader.h Examining data/libzmf-0.0.2/src/lib/BMITypes.cpp Examining data/libzmf-0.0.2/src/lib/ZMFCollector.h Examining data/libzmf-0.0.2/src/lib/ZMF2Parser.cpp Examining data/libzmf-0.0.2/src/lib/ZMFDocument.cpp Examining data/libzmf-0.0.2/src/lib/ZMF2Header.h Examining data/libzmf-0.0.2/src/lib/ZMFCollector.cpp Examining data/libzmf-0.0.2/src/lib/BMIParser.h Examining data/libzmf-0.0.2/src/lib/ZMF4Parser.h Examining data/libzmf-0.0.2/src/lib/BMIParser.cpp Examining data/libzmf-0.0.2/src/lib/ZMF4Parser.cpp Examining data/libzmf-0.0.2/src/lib/ZMF2Parser.h Examining data/libzmf-0.0.2/src/lib/ZBRParser.cpp Examining data/libzmf-0.0.2/src/lib/libzmf_utils.cpp Examining data/libzmf-0.0.2/src/lib/BMIHeader.cpp Examining data/libzmf-0.0.2/src/lib/libzmf_utils.h Examining data/libzmf-0.0.2/src/lib/ZMFTypes.h Examining data/libzmf-0.0.2/src/lib/ZMF4Header.cpp Examining data/libzmf-0.0.2/src/lib/ZMF4Header.h Examining data/libzmf-0.0.2/src/lib/ZMF2Header.cpp Examining data/libzmf-0.0.2/src/lib/ZMFTypes.cpp Examining data/libzmf-0.0.2/src/lib/ZBRHeader.h Examining data/libzmf-0.0.2/src/lib/BMITypes.h Examining data/libzmf-0.0.2/src/lib/ZBRHeader.cpp Examining data/libzmf-0.0.2/src/lib/ZBRParser.h Examining data/libzmf-0.0.2/src/test/test.cpp Examining data/libzmf-0.0.2/src/test/ZMFDocumentTest.cpp Examining data/libzmf-0.0.2/src/test/ZMFTypesTest.cpp Examining data/libzmf-0.0.2/src/fuzz/bmifuzzer.cpp Examining data/libzmf-0.0.2/src/fuzz/zmffuzzer.cpp Examining data/libzmf-0.0.2/src/conv/svg/zmf2svg.cpp Examining data/libzmf-0.0.2/src/conv/raw/zmf2raw.cpp FINAL RESULTS: data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:36:10: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. border.sprintf("%fin", pen.width); data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:142:16: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. sElement.sprintf("%c%lf %lf ", action[0], path[i]["svg:x"]->getDouble(), path[i]["svg:y"]->getDouble()); data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:151:16: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. sElement.sprintf("C%lf %lf %lf %lf %lf %lf ", data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:195:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. propName.sprintf("draw:marker-%s-viewbox", name); data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:197:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. propName.sprintf("draw:marker-%s-path", name); data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:199:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. propName.sprintf("draw:marker-%s-width", name); data/libzmf-0.0.2/src/lib/ZMFCollector.cpp:201:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. propName.sprintf("draw:marker-%s-center", name); data/libzmf-0.0.2/src/lib/ZMFTypes.cpp:180:12: [4] (format) sprintf: Potential format string problem (CWE-134). Make format string constant. colorStr.sprintf("#%.2x%.2x%.2x", red, green, blue); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:282:8: [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. std::vfprintf(stderr, format, args); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:74:3: [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. char outbuf[7] = { 0 }; data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:94:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint8_t), numBytesRead); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:106:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint16_t), numBytesRead); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:122:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint32_t), numBytesRead); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:138:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t const *p = input->read(sizeof(uint64_t), numBytesRead); data/libzmf-0.0.2/src/lib/libzmf_utils.cpp:167:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const unsigned char *const s = input->read(numBytes, readBytes); ANALYSIS SUMMARY: Hits = 15 Lines analyzed = 5878 in approximately 0.22 seconds (26143 lines/second) Physical Source Lines of Code (SLOC) = 4288 Hits@level = [0] 16 [1] 5 [2] 1 [3] 0 [4] 9 [5] 0 Hits@level+ = [0+] 31 [1+] 15 [2+] 10 [3+] 9 [4+] 9 [5+] 0 Hits/KSLOC@level+ = [0+] 7.22948 [1+] 3.49813 [2+] 2.33209 [3+] 2.09888 [4+] 2.09888 [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.