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/silly-0.1.0/src/SILLYDataSource.cpp Examining data/silly-0.1.0/src/SILLYMemoryDataSource.cpp Examining data/silly-0.1.0/src/SILLYImageLoaderManager.cpp Examining data/silly-0.1.0/src/loaders/SILLYJPGImageContext.cpp Examining data/silly-0.1.0/src/loaders/SILLYJPGImageLoader.cpp Examining data/silly-0.1.0/src/loaders/SILLYPNGImageContext.cpp Examining data/silly-0.1.0/src/loaders/SILLYTGAImageContext.cpp Examining data/silly-0.1.0/src/loaders/SILLYTGAImageLoader.cpp Examining data/silly-0.1.0/src/loaders/SILLYPNGImageLoader.cpp Examining data/silly-0.1.0/src/SILLYImageContext.cpp Examining data/silly-0.1.0/src/SILLYImage.cpp Examining data/silly-0.1.0/src/SILLYImageLoader.cpp Examining data/silly-0.1.0/src/SILLYFileDataSource.cpp Examining data/silly-0.1.0/include/SILLYOptions.h Examining data/silly-0.1.0/include/SILLY.h Examining data/silly-0.1.0/include/SILLYFileDataSource.h Examining data/silly-0.1.0/include/SILLYMemoryDataSource.h Examining data/silly-0.1.0/include/SILLYBase.h Examining data/silly-0.1.0/include/loaders/SILLYPNGImageLoader.h Examining data/silly-0.1.0/include/loaders/SILLYTGAImageContext.h Examining data/silly-0.1.0/include/loaders/SILLYPNGImageContext.h Examining data/silly-0.1.0/include/loaders/SILLYJPGImageContext.h Examining data/silly-0.1.0/include/loaders/SILLYJPGImageLoader.h Examining data/silly-0.1.0/include/loaders/SILLYTGAImageLoader.h Examining data/silly-0.1.0/include/SILLYImageLoaderManager.h Examining data/silly-0.1.0/include/SILLYImage.h Examining data/silly-0.1.0/include/SILLYDataSource.h Examining data/silly-0.1.0/include/SILLYImageLoader.h Examining data/silly-0.1.0/include/SILLYImageContext.h FINAL RESULTS: data/silly-0.1.0/src/SILLYFileDataSource.cpp:49:18: [2] (misc) fopen: 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). FILE* data = fopen(filename, "rb"); data/silly-0.1.0/src/SILLYImageContext.cpp:74:9: [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( tmp, p1, len ); data/silly-0.1.0/src/SILLYImageContext.cpp:75:9: [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( p1, p2, len ); data/silly-0.1.0/src/SILLYImageContext.cpp:76:9: [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( p2, tmp, len ); data/silly-0.1.0/src/loaders/SILLYPNGImageContext.cpp:53:5: [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(data, d_data->getDataPtr() + d_offset, length); data/silly-0.1.0/src/loaders/SILLYPNGImageLoader.cpp:71:5: [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(buf, png_jmpbuf((png_ptr)), sizeof(jmp_buf)); data/silly-0.1.0/src/loaders/SILLYPNGImageLoader.cpp:73:5: [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(buf, png_ptr->jmpbuf, sizeof(jmp_buf)); data/silly-0.1.0/include/loaders/SILLYPNGImageContext.h:51:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int read(png_bytep data, png_size_t length); data/silly-0.1.0/src/loaders/SILLYPNGImageContext.cpp:46:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int PNGImageContext::read(png_bytep data, png_size_t length) data/silly-0.1.0/src/loaders/SILLYPNGImageLoader.cpp:51:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int readed = png->read(data, length); ANALYSIS SUMMARY: Hits = 10 Lines analyzed = 2920 in approximately 0.12 seconds (25260 lines/second) Physical Source Lines of Code (SLOC) = 1305 Hits@level = [0] 2 [1] 3 [2] 7 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 12 [1+] 10 [2+] 7 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 9.1954 [1+] 7.66284 [2+] 5.36398 [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.