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/bbpager-0.4.7/src/pager.h Examining data/bbpager-0.4.7/src/pager.cxx Examining data/bbpager-0.4.7/src/main.h Examining data/bbpager-0.4.7/src/bbpager.cxx Examining data/bbpager-0.4.7/src/resource.h Examining data/bbpager-0.4.7/src/wminterface.h Examining data/bbpager-0.4.7/src/wminterface.cxx Examining data/bbpager-0.4.7/src/Baseresource.h Examining data/bbpager-0.4.7/src/blackboxstyle.h Examining data/bbpager-0.4.7/src/desktop.cxx Examining data/bbpager-0.4.7/src/bbpager.h Examining data/bbpager-0.4.7/src/desktop.h Examining data/bbpager-0.4.7/src/Baseresource.cxx Examining data/bbpager-0.4.7/src/main.cxx Examining data/bbpager-0.4.7/src/resource.cxx FINAL RESULTS: data/bbpager-0.4.7/src/Baseresource.cxx:245:5: [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 color_name[8]; data/bbpager-0.4.7/src/bbpager.cxx:516:17: [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 position[13]; data/bbpager-0.4.7/src/bbpager.cxx:517:17: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(position,"+%i+%i",x(),y()); data/bbpager-0.4.7/src/Baseresource.cxx:45:60: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const std::string blackbox_stylefile = bt_resource.read("session.styleFile", "Session.StyleFile", ""); data/bbpager-0.4.7/src/Baseresource.cxx:96:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return(bt_resource.read(rname, rclass, default_val)); data/bbpager-0.4.7/src/Baseresource.cxx:103:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:105:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return(bt_resource.read(alt_rname, alt_rclass, default_val)); data/bbpager-0.4.7/src/Baseresource.cxx:112:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(rname, rclass, "0"); data/bbpager-0.4.7/src/Baseresource.cxx:123:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:136:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:138:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(alt_rname, alt_rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:147:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string tmp = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:159:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string rcolor = bt_resource.read(rname, rclass, default_color); data/bbpager-0.4.7/src/Baseresource.cxx:170:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string rcolor = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:172:30: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). rcolor = bt_resource.read(alt_rname, alt_rclass, default_color); data/bbpager-0.4.7/src/Baseresource.cxx:208:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string rtexture = bt_resource.read(rname, rclass, data/bbpager-0.4.7/src/Baseresource.cxx:209:55: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bt_resource.read(rname + ".appearance", data/bbpager-0.4.7/src/Baseresource.cxx:229:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). std::string font_name = bt_resource.read(rname, rclass, ""); data/bbpager-0.4.7/src/Baseresource.cxx:231:33: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). font_name = bt_resource.read(alt_rname, alt_rclass, ""); ANALYSIS SUMMARY: Hits = 19 Lines analyzed = 3499 in approximately 0.10 seconds (33817 lines/second) Physical Source Lines of Code (SLOC) = 2542 Hits@level = [0] 20 [1] 16 [2] 3 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 39 [1+] 19 [2+] 3 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 15.3423 [1+] 7.47443 [2+] 1.18017 [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.