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/cddlib-094j/lib-src/cdd.h Examining data/cddlib-094j/lib-src/cddmp.h Examining data/cddlib-094j/lib-src/cddtypes.h Examining data/cddlib-094j/lib-src/setoper.h Examining data/cddlib-094j/lib-src/splitmix64.h Examining data/cddlib-094j/lib-src/cdd_f.h Examining data/cddlib-094j/lib-src/cddmp_f.h Examining data/cddlib-094j/lib-src/cddtypes_f.h Examining data/cddlib-094j/lib-src/cddcore.c Examining data/cddlib-094j/lib-src/cddlp.c Examining data/cddlib-094j/lib-src/cddmp.c Examining data/cddlib-094j/lib-src/cddio.c Examining data/cddlib-094j/lib-src/cddlib.c Examining data/cddlib-094j/lib-src/cddproj.c Examining data/cddlib-094j/lib-src/setoper.c Examining data/cddlib-094j/src/adjacency.c Examining data/cddlib-094j/src/allfaces.c Examining data/cddlib-094j/src/cddexec.c Examining data/cddlib-094j/src/fourier.c Examining data/cddlib-094j/src/lcdd.c Examining data/cddlib-094j/src/projection.c Examining data/cddlib-094j/src/redcheck.c Examining data/cddlib-094j/src/redexter.c Examining data/cddlib-094j/src/redundancies.c Examining data/cddlib-094j/src/redundancies_clarkson.c Examining data/cddlib-094j/src/scdd.c Examining data/cddlib-094j/src/testcdd1.c Examining data/cddlib-094j/src/testcdd2.c Examining data/cddlib-094j/src/testlp1.c Examining data/cddlib-094j/src/testlp2.c Examining data/cddlib-094j/src/testlp3.c Examining data/cddlib-094j/src/testshoot.c FINAL RESULTS: data/cddlib-094j/lib-src/cddio.c:35:5: [4] (buffer) scanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. scanf("%s",inputfile); data/cddlib-094j/lib-src/cddio.c:48:11: [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(inputfile,tempname); data/cddlib-094j/lib-src/cddio.c:129:8: [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). else strcpy(ifilehead,inputfile); data/cddlib-094j/lib-src/cddio.c:131:3: [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(outfile,ifilehead); data/cddlib-094j/lib-src/cddio.c:132:3: [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). strcat(outfile,extension); data/cddlib-094j/lib-src/cddio.c:134:5: [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(outfile,inputfile); data/cddlib-094j/lib-src/cddio.c:135:5: [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). strcat(outfile,extension); data/cddlib-094j/lib-src/cddio.c:902:9: [4] (buffer) fscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. if (fscanf(f,"%s",command)==EOF) { data/cddlib-094j/lib-src/cddio.c:922:3: [4] (buffer) fscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. fscanf(f, "%ld %ld %s", &m_input, &d_input, numbtype); data/cddlib-094j/lib-src/cddio.c:950:7: [4] (buffer) fscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. if (fscanf(f,"%s",command)==EOF) { data/cddlib-094j/lib-src/cddio.c:965:5: [4] (buffer) fscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. fscanf(f,"%s", command); data/cddlib-094j/lib-src/cddio.c:2012:4: [4] (buffer) fscanf: The scanf() family's %s operation, without a limit specification, permits buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a different input function. fscanf(f, "%s ", number_s); data/cddlib-094j/src/adjacency.c:78:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/allfaces.c:135:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/fourier.c:75:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/projection.c:76:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/redcheck.c:74:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/redexter.c:79:5: [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(inputfile1,argv[1]); data/cddlib-094j/src/redexter.c:80:5: [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(inputfile2,argv[2]); data/cddlib-094j/src/redundancies.c:74:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/redundancies_clarkson.c:74:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/src/scdd.c:73:15: [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). if (argc>1) strcpy(inputfile,argv[1]); data/cddlib-094j/lib-src/cddio.c:53:17: [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). if ( ( *f = fopen(inputfile,"r") )!= NULL) { data/cddlib-094j/lib-src/cddio.c:130:29: [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. if (strlen(inputfile)<=0) strcpy(ifilehead,"tempcdd"); data/cddlib-094j/lib-src/cddio.c:162: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 newline[dd_linelenmax]; data/cddlib-094j/lib-src/cddio.c:873:10: [2] (integer) atol: 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). eqsize=atol(next); data/cddlib-094j/lib-src/cddio.c:875:10: [2] (integer) atol: 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). var=atol(next); data/cddlib-094j/lib-src/cddio.c:892: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 command[dd_linelenmax], comsave[dd_linelenmax], numbtype[dd_wordlenmax]; data/cddlib-094j/lib-src/cddio.c:1965:14: [2] (integer) atol: 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). numerator=atol (numerator_s); data/cddlib-094j/lib-src/cddio.c:1969:18: [2] (integer) atol: 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). denominator=atol (denominator_s); data/cddlib-094j/lib-src/cddio.c:2008:4: [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 number_s [dd_wordlenmax]; data/cddlib-094j/lib-src/cddlib.c:340:25: [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). else if ( ( reading = fopen(ifile, "r") )!= NULL) { data/cddlib-094j/lib-src/cddlib.c:353:26: [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). else if ( (writing = fopen(ofile, "w") ) != NULL){ data/cddlib-094j/lib-src/cddtypes.h:47: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. typedef char dd_DataFileType[dd_filenamelen]; data/cddlib-094j/lib-src/cddtypes.h:48: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. typedef char dd_LineType[dd_linelenmax]; data/cddlib-094j/lib-src/cddtypes.h:49: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. typedef char dd_WordType[dd_wordlenmax]; data/cddlib-094j/lib-src/cddtypes_f.h:48: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. typedef char ddf_DataFileType[ddf_filenamelen]; data/cddlib-094j/lib-src/cddtypes_f.h:49: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. typedef char ddf_LineType[ddf_linelenmax]; data/cddlib-094j/lib-src/cddtypes_f.h:50: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. typedef char ddf_WordType[ddf_wordlenmax]; data/cddlib-094j/src/adjacency.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/adjacency.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/allfaces.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/allfaces.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/fourier.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/fourier.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/projection.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/projection.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/redcheck.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/redcheck.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/redexter.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/redexter.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/redundancies.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/redundancies.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/redundancies_clarkson.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/redundancies_clarkson.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/scdd.c:36:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/scdd.c:50: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). if ( (*f = fopen(fname, "w")) != NULL){ data/cddlib-094j/src/testcdd1.c:35:15: [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). if ( ( *f = fopen(fname, "r") )!= NULL) { data/cddlib-094j/src/testlp3.c:38:8: [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). *f = fopen(fname, "w"); data/cddlib-094j/src/testshoot.c:38:8: [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). *f = fopen(fname, "w"); data/cddlib-094j/lib-src/cddcore.c:1049:85: [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. void dd_CheckEquality(dd_colrange d_size, dd_RayPtr*RP1, dd_RayPtr*RP2, dd_boolean *equal) data/cddlib-094j/lib-src/cddcore.c:1057:26: [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. while (j <= d_size && *equal) { data/cddlib-094j/lib-src/cddcore.c:1062:8: [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. if (*equal) data/cddlib-094j/lib-src/cddcore.c:1442:26: [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. dd_boolean determined, equal; data/cddlib-094j/lib-src/cddcore.c:1456:10: [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. return equal; data/cddlib-094j/lib-src/cddcore.c:1472:19: [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. dd_boolean adj, equal, completed; data/cddlib-094j/lib-src/cddcore.c:1509:52: [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. dd_CheckEquality(cone->d, &RayPtr1, &RayPtr2, &equal); data/cddlib-094j/lib-src/cddcore.c:1518:32: [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. if (dd_Negative(value1) || equal) { data/cddlib-094j/lib-src/cddio.c:36:8: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ch=getchar(); data/cddlib-094j/lib-src/cddio.c:47:11: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(tempname,inputfile,i); data/cddlib-094j/lib-src/cddio.c:125:16: [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< strlen(inputfile); i++){ data/cddlib-094j/lib-src/cddio.c:128:17: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). if (dotpos>1) strncpy(ifilehead, inputfile, dotpos); data/cddlib-094j/lib-src/cddio.c:130:7: [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(inputfile)<=0) strcpy(ifilehead,"tempcdd"); data/cddlib-094j/src/allfaces.c:153:8: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ch=getchar(); getchar(); data/cddlib-094j/src/allfaces.c:153:19: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ch=getchar(); getchar(); data/cddlib-094j/src/allfaces.c:163:6: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ch=getchar(); data/cddlib-094j/src/testlp1.c:83:9: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ans=getchar(); data/cddlib-094j/src/testlp1.c:97:9: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ans=getchar(); ans=getchar(); data/cddlib-094j/src/testlp1.c:97:24: [1] (buffer) getchar: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ans=getchar(); ans=getchar(); ANALYSIS SUMMARY: Hits = 79 Lines analyzed = 13056 in approximately 2.82 seconds (4628 lines/second) Physical Source Lines of Code (SLOC) = 9831 Hits@level = [0] 659 [1] 19 [2] 38 [3] 0 [4] 22 [5] 0 Hits@level+ = [0+] 738 [1+] 79 [2+] 60 [3+] 22 [4+] 22 [5+] 0 Hits/KSLOC@level+ = [0+] 75.0687 [1+] 8.03581 [2+] 6.10314 [3+] 2.23782 [4+] 2.23782 [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.