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/textdraw-0.2+ds/td.c FINAL RESULTS: data/textdraw-0.2+ds/td.c:353:2: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(txt[lasttxt].t, string), data/textdraw-0.2+ds/td.c:486:24: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). txt[i-1].t[0]='\0'; strcpy(txt[i-1].t,txt[i].t); data/textdraw-0.2+ds/td.c:524:18: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). buf.t[0]='\0'; strcpy(buf.t,txt[mark.nr].t); data/textdraw-0.2+ds/td.c:560:27: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). txt[lasttxt].t[0]='\0'; strcpy(txt[lasttxt].t,buf.t); data/textdraw-0.2+ds/td.c:29:1: [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 chart[MAXTXTLEN][MAXTXTLEN]; // max chart (console) dimensions data/textdraw-0.2+ds/td.c:30:1: [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 string[MAXTXTLEN]=""; data/textdraw-0.2+ds/td.c:47:19: [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. {int x,y; char a; char t[MAXTXTLEN];}; data/textdraw-0.2+ds/td.c:55:29: [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. {int x1,y1,x2,y2; char c,a; char t[MAXTXTLEN];}; data/textdraw-0.2+ds/td.c:66:2: [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 s[MAXTXTLEN]; data/textdraw-0.2+ds/td.c:75: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 buf[128]; data/textdraw-0.2+ds/td.c:351:18: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. string[0]='\0'; strcpy(string,"input text: "); data/textdraw-0.2+ds/td.c:356:2: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy(string, data/textdraw-0.2+ds/td.c:378:18: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. string[0]='\0'; strcpy(string,"line draw character: "); data/textdraw-0.2+ds/td.c:591:6: [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). fil=fopen(filename,"r"); data/textdraw-0.2+ds/td.c:628:6: [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). fil=fopen(filename,"w+"); data/textdraw-0.2+ds/td.c:664:7: [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). prnt=fopen("print","w"); data/textdraw-0.2+ds/td.c:162:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). for(i=0;i<lasttxt;i++) for(j=0;j<=strlen(txt[i].t)-1;j++) data/textdraw-0.2+ds/td.c:653:30: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). txt[i].x,txt[i].y,txt[i].a,strlen(txt[i].t),txt[i].t); data/textdraw-0.2+ds/td.c:672:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). { j=strlen(chart[i])-1; ANALYSIS SUMMARY: Hits = 19 Lines analyzed = 795 in approximately 0.05 seconds (16563 lines/second) Physical Source Lines of Code (SLOC) = 672 Hits@level = [0] 19 [1] 3 [2] 12 [3] 0 [4] 4 [5] 0 Hits@level+ = [0+] 38 [1+] 19 [2+] 16 [3+] 4 [4+] 4 [5+] 0 Hits/KSLOC@level+ = [0+] 56.5476 [1+] 28.2738 [2+] 23.8095 [3+] 5.95238 [4+] 5.95238 [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.