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/icebreaker-1.21/cursor.c Examining data/icebreaker-1.21/cursor.h Examining data/icebreaker-1.21/dialog.c Examining data/icebreaker-1.21/dialog.h Examining data/icebreaker-1.21/fullscreen.c Examining data/icebreaker-1.21/fullscreen.h Examining data/icebreaker-1.21/globals.h Examining data/icebreaker-1.21/grid.c Examining data/icebreaker-1.21/grid.h Examining data/icebreaker-1.21/hiscore.h Examining data/icebreaker-1.21/icebreaker.c Examining data/icebreaker-1.21/icebreaker.h Examining data/icebreaker-1.21/intro.c Examining data/icebreaker-1.21/intro.h Examining data/icebreaker-1.21/laundry.c Examining data/icebreaker-1.21/laundry.h Examining data/icebreaker-1.21/level.c Examining data/icebreaker-1.21/level.h Examining data/icebreaker-1.21/line.c Examining data/icebreaker-1.21/line.h Examining data/icebreaker-1.21/options.h Examining data/icebreaker-1.21/penguin.c Examining data/icebreaker-1.21/penguin.h Examining data/icebreaker-1.21/sound.c Examining data/icebreaker-1.21/sound.h Examining data/icebreaker-1.21/status.c Examining data/icebreaker-1.21/status.h Examining data/icebreaker-1.21/text.c Examining data/icebreaker-1.21/text.h Examining data/icebreaker-1.21/transition.c Examining data/icebreaker-1.21/transition.h Examining data/icebreaker-1.21/win32_compatibility.c Examining data/icebreaker-1.21/win32_compatibility.h Examining data/icebreaker-1.21/hiscore.c Examining data/icebreaker-1.21/options.c FINAL RESULTS: data/icebreaker-1.21/options.c:67:3: [4] (format) fprintf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. fprintf(stderr, OPTIONFILE " doesn't exist.\nWelcome to IceBreaker.\n"); data/icebreaker-1.21/win32_compatibility.h:39:9: [4] (format) snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. #define snprintf _snprintf data/icebreaker-1.21/win32_compatibility.h:39:18: [4] (format) _snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. #define snprintf _snprintf data/icebreaker-1.21/icebreaker.c:74:2: [3] (random) srandom: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. srandom(time(NULL)); data/icebreaker-1.21/intro.c:61:10: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. c = (random() % 32)+224; data/icebreaker-1.21/intro.c:435:13: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. x=LXPOS(random() % 32); data/icebreaker-1.21/intro.c:436:13: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. y=LYPOS(random() % 20); data/icebreaker-1.21/intro.c:437:9: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. if (random()%2) data/icebreaker-1.21/level.c:67:10: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. c = (random() % 32)+224; data/icebreaker-1.21/penguin.c:33:39: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. return(createpenguinxy(BORDERLEFT + (random() % (PLAYWIDTH-BLOCKWIDTH)),BORDERTOP + (random() % (PLAYHEIGHT-BLOCKWIDTH)))); data/icebreaker-1.21/penguin.c:33:87: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. return(createpenguinxy(BORDERLEFT + (random() % (PLAYWIDTH-BLOCKWIDTH)),BORDERTOP + (random() % (PLAYHEIGHT-BLOCKWIDTH)))); data/icebreaker-1.21/penguin.c:59:10: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. switch (random() % 4) data/icebreaker-1.21/win32_compatibility.h:45:9: [3] (random) srandom: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. #define srandom(A) srand(A) data/icebreaker-1.21/win32_compatibility.h:45:20: [3] (random) srand: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. #define srandom(A) srand(A) data/icebreaker-1.21/win32_compatibility.h:46:9: [3] (random) random: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. #define random() rand() data/icebreaker-1.21/dialog.c:255: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 * mainmenu[MAINMENULENGTH] = { "NEW GAME", "OPTIONS", "HIGH SCORES", "HELP","QUIT" }; data/icebreaker-1.21/dialog.c:343: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 * optionsmenu[OPTIONSMENULENGTH] = { "SOUND", "AUTO PAUSE", "FULL SCREEN", "DIFFICULTY" }; data/icebreaker-1.21/dialog.c:346: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 * optionsmenu[OPTIONSMENULENGTH] = { "SOUND", "AUTO PAUSE", "DIFFICULTY" }; data/icebreaker-1.21/dialog.c:524: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 buf[30]; // plenty big. :) data/icebreaker-1.21/dialog.c:577: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 buf[80]; data/icebreaker-1.21/dialog.c:579: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 helptext[13][50]={ data/icebreaker-1.21/dialog.c:677: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 menuvalues[MAXMENUITEMS][MAXMENUVALUELENGTH]; data/icebreaker-1.21/globals.h:25:8: [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. extern char grid[WIDTH][HEIGHT]; data/icebreaker-1.21/globals.h:27:8: [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. extern char username[50]; data/icebreaker-1.21/globals.h:28:8: [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. extern char homedir[255]; data/icebreaker-1.21/grid.c:30:8: [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. static char maskgrid[WIDTH][HEIGHT]; data/icebreaker-1.21/grid.c:127:2: [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(maskgrid,grid,WIDTH*HEIGHT); data/icebreaker-1.21/hiscore.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 hiscorename[HISCORENUM][50]; data/icebreaker-1.21/hiscore.c:33:8: [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. static char temphiscorename[HISCORENUM+1][50]; //used for sorting data/icebreaker-1.21/hiscore.c:41: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 linebuf[50]; data/icebreaker-1.21/hiscore.c:59:14: [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). hiscorefile=fopen(HISCOREPREFIX "/" HISCOREFILE,"r"); data/icebreaker-1.21/hiscore.c:138:14: [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). hiscorefile=fopen(HISCOREPREFIX "/" HISCOREFILE,"w"); data/icebreaker-1.21/hiscore.h:29:8: [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. extern char hiscorename[HISCORENUM][50]; data/icebreaker-1.21/icebreaker.c:55: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 grid[WIDTH][HEIGHT]; data/icebreaker-1.21/icebreaker.c:57: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 username[50]; // FIX -- move this into the options struct? data/icebreaker-1.21/icebreaker.c:58: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 homedir[255]; data/icebreaker-1.21/icebreaker.c:154: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 windowtitle[35]; data/icebreaker-1.21/intro.c:114: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 scoretext[40]; data/icebreaker-1.21/options.c:51: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 linebuf[50]; data/icebreaker-1.21/options.c:52: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 filename[255]; data/icebreaker-1.21/options.c:53: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 optbuf[21]; data/icebreaker-1.21/options.c:54: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 valbuf[11]; data/icebreaker-1.21/options.c:64:13: [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). optionfile=fopen(filename,"r"); data/icebreaker-1.21/options.c:127: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 filename[255]; data/icebreaker-1.21/options.c:134:13: [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). optionfile=fopen(filename,"w"); data/icebreaker-1.21/options.h:38:9: [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 theme[MAXTHEMELENGTH]; data/icebreaker-1.21/status.c:37: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 tmptext[30]; // should be plenty big. data/icebreaker-1.21/status.c:58: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 tmptext[30]; // should be plenty big. data/icebreaker-1.21/status.c:80: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 tmptext[30]; // should be plenty big. data/icebreaker-1.21/status.c:101: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 tmptext[40]; // should be plenty big. data/icebreaker-1.21/text.c:28:8: [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. static char * letterdata[6]; data/icebreaker-1.21/transition.c:43: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 scoretext[30]; data/icebreaker-1.21/transition.c:44: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 bonustext[30]; data/icebreaker-1.21/transition.c:146: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 finaltext[30]; data/icebreaker-1.21/dialog.c:369: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). if (strlen(val)==0) data/icebreaker-1.21/dialog.c:374:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:376:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:380:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"n/a",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:390:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:395:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:403: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). if (strlen(val)==0) data/icebreaker-1.21/dialog.c:406:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:408:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:416:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:421:4: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:429: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). if (strlen(val)==0) data/icebreaker-1.21/dialog.c:434:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:437:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:440:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"always",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:451:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"on",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:456:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"always",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:460:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"off",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:471: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). if (strlen(val)==0) data/icebreaker-1.21/dialog.c:476:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"normal",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:479:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"easy",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:482:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"hard",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:493:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"easy",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:497:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"hard",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:501:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"normal",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:510: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). if (strlen(val)==0) data/icebreaker-1.21/dialog.c:511:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(val,"linux",MAXMENUVALUELENGTH); data/icebreaker-1.21/dialog.c:705:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant character. strncpy(menuvalues[i],"",MAXMENUVALUELENGTH); data/icebreaker-1.21/hiscore.c:72:5: [1] (buffer) sscanf: It's unclear if the %s limit in the format string is small enough (CWE-120). Check that the limit is sufficiently small, or use a different input function. sscanf(linebuf,"%12s %30ld",temphiscorename[i],&temphiscoreval[i]); data/icebreaker-1.21/icebreaker.c:82:2: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(username,userinfo->pw_name,50); // not like it's gonna be fifty characters. but y'know. data/icebreaker-1.21/icebreaker.c:83:2: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(homedir,userinfo->pw_dir,255); data/icebreaker-1.21/options.c:44:9: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). Risk is low because the source is a constant string. strncpy(options.theme,"linux",MAXTHEMELENGTH); data/icebreaker-1.21/options.c:79:7: [1] (buffer) sscanf: It's unclear if the %s limit in the format string is small enough (CWE-120). Check that the limit is sufficiently small, or use a different input function. if (sscanf(linebuf,"%20s %10s",optbuf,valbuf)==2) data/icebreaker-1.21/text.c:65:14: [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 (l=0; l<strlen(text); l++) ANALYSIS SUMMARY: Hits = 88 Lines analyzed = 5032 in approximately 0.20 seconds (25336 lines/second) Physical Source Lines of Code (SLOC) = 3227 Hits@level = [0] 72 [1] 34 [2] 39 [3] 12 [4] 3 [5] 0 Hits@level+ = [0+] 160 [1+] 88 [2+] 54 [3+] 15 [4+] 3 [5+] 0 Hits/KSLOC@level+ = [0+] 49.5817 [1+] 27.2699 [2+] 16.7338 [3+] 4.64828 [4+] 0.929656 [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.