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/xsensors-0.70/src/chips.c Examining data/xsensors-0.70/src/gui.h Examining data/xsensors-0.70/src/main.h Examining data/xsensors-0.70/src/chips.h Examining data/xsensors-0.70/src/gui.c Examining data/xsensors-0.70/src/main.c Examining data/xsensors-0.70/acconfig.h FINAL RESULTS: data/xsensors-0.70/src/gui.c:453:13: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). title = strcat( title, VERSION ); data/xsensors-0.70/src/gui.c:466:9: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf( imagefile, "%s/default.xpm", DATADIR ); data/xsensors-0.70/src/main.c:30:17: [3] (buffer) getopt: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. int getopt (int, char *const *, const char *); data/xsensors-0.70/src/main.c:66:19: [3] (buffer) getopt: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. while ( ( c = getopt( argc, argv, "fhc:i:t:v" ) ) != EOF ) { data/xsensors-0.70/src/gui.c:452:13: [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. title = strcpy( title, "xsensors " ); data/xsensors-0.70/src/main.c:90:31: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). update_time = atoi( temp_str ); data/xsensors-0.70/src/main.c:110:28: [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). ( sens_conf_file = fopen( sens_config, "r" ) ) == NULL ) { data/xsensors-0.70/src/gui.c:361:35: [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). ( strlen( feattext ) + 2 ) * data/xsensors-0.70/src/gui.c:368:17: [1] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant character. strcat( feattext, ":" ); ANALYSIS SUMMARY: Hits = 9 Lines analyzed = 891 in approximately 0.03 seconds (25728 lines/second) Physical Source Lines of Code (SLOC) = 594 Hits@level = [0] 27 [1] 2 [2] 3 [3] 2 [4] 2 [5] 0 Hits@level+ = [0+] 36 [1+] 9 [2+] 7 [3+] 4 [4+] 2 [5+] 0 Hits/KSLOC@level+ = [0+] 60.6061 [1+] 15.1515 [2+] 11.7845 [3+] 6.73401 [4+] 3.367 [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.