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/inform6-library-6.12.2+dfsg.1/english.h Examining data/inform6-library-6.12.2+dfsg.1/verblib.h Examining data/inform6-library-6.12.2+dfsg.1/parser.h Examining data/inform6-library-6.12.2+dfsg.1/grammar.h Examining data/inform6-library-6.12.2+dfsg.1/infix.h Examining data/inform6-library-6.12.2+dfsg.1/linklpa.h FINAL RESULTS: data/inform6-library-6.12.2+dfsg.1/parser.h:4128:28: [5] (buffer) gets: Does not check for buffer overflows (CWE-120, CWE-20). Use fgets() instead. ! First, a scope token gets priority here: data/inform6-library-6.12.2+dfsg.1/parser.h:25:43: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. ! Definition of grammar token numbering system used by Inform data/inform6-library-6.12.2+dfsg.1/linklpa.h:55:11: [2] (misc) open: 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). Attribute open; data/inform6-library-6.12.2+dfsg.1/parser.h:2383:55: [2] (misc) open: 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). else if (noun has container && noun hasnt open) L__M(##Take, 9, noun); data/inform6-library-6.12.2+dfsg.1/parser.h:2468:58: [2] (misc) open: 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). (act has container && act has open))) data/inform6-library-6.12.2+dfsg.1/parser.h:3774:73: [2] (misc) open: 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). (its_owner has container && its_owner has open))) data/inform6-library-6.12.2+dfsg.1/parser.h:4179:34: [2] (misc) open: 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). (o has container && o has open)) data/inform6-library-6.12.2+dfsg.1/parser.h:5716:19: [2] (misc) open: 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). if (i has open || i has transparent) data/inform6-library-6.12.2+dfsg.1/parser.h:5729:46: [2] (misc) open: 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). if (obj has container) return (obj hasnt open); data/inform6-library-6.12.2+dfsg.1/parser.h:6296:18: [2] (misc) open: 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). ! Now re-open the windows to apply the hints data/inform6-library-6.12.2+dfsg.1/parser.h:6584:32: [2] (misc) open: 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). ! If we can't even open one window, there's no point in going on. data/inform6-library-6.12.2+dfsg.1/verblib.h:223:71: [2] (misc) open: 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). if ((o has transparent or supporter) || (o has container && o has open)) rtrue; data/inform6-library-6.12.2+dfsg.1/verblib.h:235:25: [2] (misc) open: 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). if ((o1 has open && o2 hasnt open) || (o2 has open && o1 hasnt open)) data/inform6-library-6.12.2+dfsg.1/verblib.h:235:42: [2] (misc) open: 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). if ((o1 has open && o2 hasnt open) || (o2 has open && o1 hasnt open)) data/inform6-library-6.12.2+dfsg.1/verblib.h:235:59: [2] (misc) open: 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). if ((o1 has open && o2 hasnt open) || (o2 has open && o1 hasnt open)) data/inform6-library-6.12.2+dfsg.1/verblib.h:235:76: [2] (misc) open: 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). if ((o1 has open && o2 hasnt open) || (o2 has open && o1 hasnt open)) data/inform6-library-6.12.2+dfsg.1/verblib.h:620:40: [2] (misc) open: 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). if (o has container && o hasnt open) combo=combo+2; data/inform6-library-6.12.2+dfsg.1/verblib.h:621:40: [2] (misc) open: 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). if ((o has container && (o has open || o has transparent))) { data/inform6-library-6.12.2+dfsg.1/verblib.h:646:27: [2] (misc) open: 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). if (o has open) data/inform6-library-6.12.2+dfsg.1/verblib.h:684:39: [2] (misc) open: 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). if (o has container && (o has open || o has transparent)) { data/inform6-library-6.12.2+dfsg.1/verblib.h:738:31: [2] (misc) open: 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). ! To deal with supporters and open containers, so that objects are processed data/inform6-library-6.12.2+dfsg.1/verblib.h:741:71: [2] (misc) open: 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). ! if ((o has transparent or supporter) || (o has container && o has open)) rtrue; data/inform6-library-6.12.2+dfsg.1/verblib.h:1729:19: [2] (misc) open: 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). if (obj hasnt open) rfalse; data/inform6-library-6.12.2+dfsg.1/verblib.h:1737:17: [2] (misc) open: 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). if (obj has open) rtrue; data/inform6-library-6.12.2+dfsg.1/verblib.h:1744:17: [2] (misc) open: 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). if (obj has open) rfalse; data/inform6-library-6.12.2+dfsg.1/verblib.h:1753:19: [2] (misc) open: 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). if (obj hasnt open) rtrue; data/inform6-library-6.12.2+dfsg.1/verblib.h:1798:41: [2] (misc) open: 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). if (i && i has container && i hasnt open && ImplicitOpen(i)) return L__M(##Remove, 1, i); data/inform6-library-6.12.2+dfsg.1/verblib.h:1869:50: [2] (misc) open: 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). if (second has container && second hasnt open && ImplicitOpen(second)) data/inform6-library-6.12.2+dfsg.1/verblib.h:1910:20: [2] (misc) open: 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). if (noun hasnt open && ImplicitOpen(noun)) return L__M(##EmptyT, 2, noun); data/inform6-library-6.12.2+dfsg.1/verblib.h:1914:30: [2] (misc) open: 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). if (second hasnt open && ImplicitOpen(second)) data/inform6-library-6.12.2+dfsg.1/verblib.h:1925:24: [2] (misc) open: 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). if (noun hasnt open) flag = true; data/inform6-library-6.12.2+dfsg.1/verblib.h:1929:34: [2] (misc) open: 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). if (second hasnt open) flag = true; data/inform6-library-6.12.2+dfsg.1/verblib.h:2004:42: [2] (misc) open: 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). if (noun has container && noun hasnt open && ImplicitOpen(noun)) return L__M(##Enter, 3, noun); data/inform6-library-6.12.2+dfsg.1/verblib.h:2029:36: [2] (misc) open: 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). if (p has container && p hasnt open && ImplicitOpen(p)) data/inform6-library-6.12.2+dfsg.1/verblib.h:2087:28: [2] (misc) open: 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). if (next_loc hasnt open && ImplicitOpen(next_loc)) { data/inform6-library-6.12.2+dfsg.1/verblib.h:2167:56: [2] (misc) open: 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). if ((o has door or container) && o has open && o provides when_open) { data/inform6-library-6.12.2+dfsg.1/verblib.h:2170:58: [2] (misc) open: 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). if ((o has door or container) && o hasnt open && o provides when_closed) { data/inform6-library-6.12.2+dfsg.1/parser.h:1094:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read a_buffer a_table; data/inform6-library-6.12.2+dfsg.1/parser.h:2040:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ! put back the non-preposition we just read data/inform6-library-6.12.2+dfsg.1/parser.h:2824:41: [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. ! So, two cases. Case 1: token not equal to "held" data/inform6-library-6.12.2+dfsg.1/verblib.h:796:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read buffer parse; data/inform6-library-6.12.2+dfsg.1/verblib.h:798:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read buffer parse DrawStatusLine; data/inform6-library-6.12.2+dfsg.1/verblib.h:1112:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read buffer parse; data/inform6-library-6.12.2+dfsg.1/verblib.h:1113:14: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). else read buffer parse DrawStatusLine; ANALYSIS SUMMARY: Hits = 44 Lines analyzed = 13613 in approximately 0.41 seconds (33337 lines/second) Physical Source Lines of Code (SLOC) = 6885 Hits@level = [0] 0 [1] 7 [2] 35 [3] 0 [4] 1 [5] 1 Hits@level+ = [0+] 44 [1+] 44 [2+] 37 [3+] 2 [4+] 2 [5+] 1 Hits/KSLOC@level+ = [0+] 6.3907 [1+] 6.3907 [2+] 5.374 [3+] 0.290487 [4+] 0.290487 [5+] 0.145243 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.