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/epcr-2.3.12-1/defaults.h Examining data/epcr-2.3.12-1/fahash_defines.h Examining data/epcr-2.3.12-1/fahash_internal.hpp Examining data/epcr-2.3.12-1/build_cfg.h Examining data/epcr-2.3.12-1/getopt.c Examining data/epcr-2.3.12-1/bin-io.hpp Examining data/epcr-2.3.12-1/fahash.hpp Examining data/epcr-2.3.12-1/fahash_main.cpp Examining data/epcr-2.3.12-1/fahash_create.cpp Examining data/epcr-2.3.12-1/fahash_create1.cpp Examining data/epcr-2.3.12-1/fahash_create2.cpp Examining data/epcr-2.3.12-1/fahash_lookup.cpp Examining data/epcr-2.3.12-1/faread.hpp Examining data/epcr-2.3.12-1/fast_seqio.hpp Examining data/epcr-2.3.12-1/fast_seqio_read.cpp Examining data/epcr-2.3.12-1/fast_seqio_write.cpp Examining data/epcr-2.3.12-1/hashset.cpp Examining data/epcr-2.3.12-1/hashset.hpp Examining data/epcr-2.3.12-1/mmap.cpp Examining data/epcr-2.3.12-1/mmap.hpp Examining data/epcr-2.3.12-1/re-PCR_main.cpp Examining data/epcr-2.3.12-1/align.cpp Examining data/epcr-2.3.12-1/align.hpp Examining data/epcr-2.3.12-1/minilcs.cpp Examining data/epcr-2.3.12-1/minilcs.hpp Examining data/epcr-2.3.12-1/seqcmp_main.cpp Examining data/epcr-2.3.12-1/strref.hpp Examining data/epcr-2.3.12-1/sts.hpp Examining data/epcr-2.3.12-1/sts_i.hpp Examining data/epcr-2.3.12-1/stsfilter.cpp Examining data/epcr-2.3.12-1/stsmatch.cpp Examining data/epcr-2.3.12-1/stsmatch.hpp Examining data/epcr-2.3.12-1/stsmatch_i.cpp Examining data/epcr-2.3.12-1/stsmatch_i.hpp Examining data/epcr-2.3.12-1/stsmatch_m.hpp Examining data/epcr-2.3.12-1/mswin.h Examining data/epcr-2.3.12-1/native64.h Examining data/epcr-2.3.12-1/faread.cpp Examining data/epcr-2.3.12-1/stsmatch_m.cpp Examining data/epcr-2.3.12-1/e-PCR_main.cpp Examining data/epcr-2.3.12-1/famap_main.cpp FINAL RESULTS: data/epcr-2.3.12-1/fahash_lookup.cpp:52:13: [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. #define DBG fprintf(stderr,__FILE__":%d\n",__LINE__) data/epcr-2.3.12-1/fahash_lookup.cpp:53:16: [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. #define HEX(a) fprintf(stderr,__FILE__":%d\t"#a"\t= 0x%08x\n",__LINE__,a) data/epcr-2.3.12-1/fahash_lookup.cpp:54:16: [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. #define INT(a) fprintf(stderr,__FILE__":%d\t"#a"\t= %d\n",__LINE__,a) data/epcr-2.3.12-1/fahash_lookup.cpp:55:16: [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. #define STR(a) fprintf(stderr,__FILE__":%d\t"#a"\t= %s\n",__LINE__,a.c_str()) data/epcr-2.3.12-1/fahash_main.cpp:158:9: [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,CLREOL " - Adding Sequence %s\n",id); data/epcr-2.3.12-1/fahash_main.cpp:167:10: [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,CLREOL " %50s\r %3d%% %.*s", data/epcr-2.3.12-1/fahash_main.cpp:176:9: [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,CLREOL "* Adding File %s\n",name); data/epcr-2.3.12-1/fahash_main.cpp:185:10: [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,CLREOL " %50s\r %3d%% %.*s", data/epcr-2.3.12-1/fahash_main.cpp:194:9: [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,CLREOL "= Dumping \n"); data/epcr-2.3.12-1/fahash_main.cpp:198:9: [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,CLREOL "= Dumping OK\n"); data/epcr-2.3.12-1/fahash_main.cpp:202:9: [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,CLREOL "= Resetting..."); data/epcr-2.3.12-1/faread.cpp:52:20: [4] (shell) popen: 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. f=pipe?popen(name,"r"):fopen64(name,"r"); data/epcr-2.3.12-1/mswin.h:47: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/epcr-2.3.12-1/mswin.h:47: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/epcr-2.3.12-1/re-PCR_main.cpp:191:13: [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,CLREOL ""); data/epcr-2.3.12-1/re-PCR_main.cpp:202:13: [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,CLREOL "- Progress: %3d%% %.*sO%.*s\r", data/epcr-2.3.12-1/stsfilter.cpp:38:18: [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. #define DBG fprintf(stdout,__FILE__"[%d]\n",__LINE__); data/epcr-2.3.12-1/stsfilter.cpp:39:18: [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. #define SHOWI(a) fprintf(stdout,__FILE__"[%d] "#a"=%d\n",__LINE__,a); data/epcr-2.3.12-1/stsfilter.cpp:41:1: [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(stdout,__FILE__"[%d] "#a"=%.*s\n",__LINE__,a.length(),a.data()); data/epcr-2.3.12-1/stsmatch_i.cpp:38:13: [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. #define DBG fprintf(stderr,__FILE__":%d\n",__LINE__) data/epcr-2.3.12-1/stsmatch_i.cpp:39:16: [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. #define INT(i) fprintf(stderr,__FILE__":%d - %s = %d\n",__LINE__,#i,i) data/epcr-2.3.12-1/stsmatch_i.cpp:40:18: [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. #define STR(s,i) fprintf(stderr,__FILE__":%d - %s = %.*s\n",__LINE__,#s,i,s) data/epcr-2.3.12-1/e-PCR_main.cpp:194: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. while((optchar=getopt(argc,argv,"+hVf:m:n:w:g:o:t:p:v:d:a:x:u:b:l:"))!=-1) { data/epcr-2.3.12-1/fahash_main.cpp:105:20: [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((optchar=getopt(argc,argv,"hVw:F:f:b:kT:v:o:c:"))!=-1) { data/epcr-2.3.12-1/famap_main.cpp:91: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. while((optchar=getopt(argc,argv,"hVb:d:l:t:"))!=-1) { data/epcr-2.3.12-1/getopt.c:39:5: [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 argc, char ** argv, const char* optstring) data/epcr-2.3.12-1/hashset.cpp:228:18: [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((optchar=getopt(argc,argv,"hVp:w:"))!=-1) { data/epcr-2.3.12-1/minilcs.cpp:53:23: [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((optopt=getopt(argc,argv,"hVg:r"))!=-1) { data/epcr-2.3.12-1/mswin.h:86:9: [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 argc, char ** argv, const char* optstring); data/epcr-2.3.12-1/re-PCR_main.cpp:127: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. while((optchar=getopt(argc,argv,"hVp:P:s:S:d:m:r:g:n:O:C:o:lGq"))!=-1) { data/epcr-2.3.12-1/seqcmp_main.cpp:116: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. while((optchar=getopt(argc,argv,"hVn:g:s:r:a:"))!=-1) { data/epcr-2.3.12-1/e-PCR_main.cpp:184:6: [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). hi=atoi(x+1); data/epcr-2.3.12-1/e-PCR_main.cpp:208:30: [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). else pcrMachine.SetMargin(atoi(optarg)); data/epcr-2.3.12-1/e-PCR_main.cpp:210:43: [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). case 'w': stsFileHash.SetHash(CHashSet(atoi(optarg), stsFileHash.GetWordCount())); break; data/epcr-2.3.12-1/e-PCR_main.cpp:211:28: [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). case 'n': m_MaxMismatch=atoi(optarg); break; data/epcr-2.3.12-1/e-PCR_main.cpp:212:24: [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). case 'g': m_MaxGaps=atoi(optarg); break; data/epcr-2.3.12-1/e-PCR_main.cpp:213:70: [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). case 'f': stsFileHash.SetHash(CHashSet(stsFileHash.GetWordSize(), atoi(optarg))); break; data/epcr-2.3.12-1/e-PCR_main.cpp:216:24: [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). case 't': ofmt=atoi(optarg); break; data/epcr-2.3.12-1/e-PCR_main.cpp:261:35: [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). case 'M': pcrMachine.SetMargin(atoi(argv[optind]+2)); break; data/epcr-2.3.12-1/e-PCR_main.cpp:262:44: [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). case 'W': stsFileHash.SetHash(CHashSet(atoi(argv[optind]+2), data/epcr-2.3.12-1/e-PCR_main.cpp:265:33: [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). case 'N': m_MaxMismatch=atoi(argv[optind]+2); break; data/epcr-2.3.12-1/e-PCR_main.cpp:266:25: [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). case 'G': m_MaxGaps=atoi(argv[optind]+2); break; data/epcr-2.3.12-1/e-PCR_main.cpp:268:48: [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). atoi(argv[optind]+2))); break; data/epcr-2.3.12-1/e-PCR_main.cpp:270:24: [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). case 'T': ofmt=atoi(argv[optind]+2); break; data/epcr-2.3.12-1/e-PCR_main.cpp:371:13: [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 buffer[1024]; data/epcr-2.3.12-1/e-PCR_main.cpp:444:5: [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 position[32]; data/epcr-2.3.12-1/e-PCR_main.cpp:453:9: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(position,"%d", 1 + (pos1+pos2-1)/2); data/epcr-2.3.12-1/e-PCR_main.cpp:455:9: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(position,"%d..%d",pos1+1,pos2); data/epcr-2.3.12-1/e-PCR_main.cpp:598:6: [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(m_Sequence+m_Size,seq,length); data/epcr-2.3.12-1/fahash_lookup.cpp:156:9: [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). m_Fd = open( path.c_str(), O_RDONLY | O_LARGEFILE ); data/epcr-2.3.12-1/fahash_lookup.cpp:160: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 buff[16]; data/epcr-2.3.12-1/fahash_main.cpp:109:26: [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). case 'w': wdsize=atoi(optarg); break; data/epcr-2.3.12-1/fahash_main.cpp:110:26: [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). case 'f': period=atoi(optarg); break; data/epcr-2.3.12-1/fahash_main.cpp:111:29: [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). case 'c': cachesize=atoi(optarg); break; data/epcr-2.3.12-1/fahash_main.cpp:127:23: [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). int v=atoi(optarg); data/epcr-2.3.12-1/fahash_main.cpp:289:13: [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 wtype[128]; data/epcr-2.3.12-1/famap_main.cpp:172:19: [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). int x=atoi(argv[a]); data/epcr-2.3.12-1/famap_main.cpp:207:19: [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). int x=atoi(argv[a]); data/epcr-2.3.12-1/faread.cpp:50: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). f=fopen(name,"r"); data/epcr-2.3.12-1/faread.cpp:98:5: [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 buffer[16192]; data/epcr-2.3.12-1/fast_seqio_read.cpp:60:9: [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). int fd=open(path.c_str(),O_RDONLY|O_LARGEFILE); data/epcr-2.3.12-1/fast_seqio_read.cpp:87: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 buff[128]; data/epcr-2.3.12-1/fast_seqio_read.cpp:120: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 buff[128]; data/epcr-2.3.12-1/hashset.cpp:234:21: [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). case 'p': period=atoi(optarg); break; data/epcr-2.3.12-1/hashset.cpp:235:21: [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). case 'w': wdsize=atoi(optarg); break; data/epcr-2.3.12-1/minilcs.cpp:64:25: [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). maxgaps=atoi(optarg); data/epcr-2.3.12-1/mswin.h:46: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). #define fopen64 fopen data/epcr-2.3.12-1/native64.h:39:18: [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). #define fopen64 fopen data/epcr-2.3.12-1/re-PCR_main.cpp:361:13: [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 buffer[1024]; data/epcr-2.3.12-1/re-PCR_main.cpp:374:19: [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(FILE * in = fopen(argv[i], "r")) { data/epcr-2.3.12-1/re-PCR_main.cpp:376:5: [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 buffer[4096]; data/epcr-2.3.12-1/re-PCR_main.cpp:423:13: [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 buffer[1024]; data/epcr-2.3.12-1/re-PCR_main.cpp:428:39: [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). int hi=(x&&(*x=='-'))?max(atoi(x+1),lo):lo; data/epcr-2.3.12-1/re-PCR_main.cpp:445:22: [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). FILE * f=fopen(argv[i],"r"); data/epcr-2.3.12-1/re-PCR_main.cpp:447:13: [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 buffer[4096]; data/epcr-2.3.12-1/seqcmp_main.cpp:120:18: [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). case 'n': mism=atoi(optarg); break; data/epcr-2.3.12-1/seqcmp_main.cpp:121:18: [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). case 'g': gaps=atoi(optarg); break; data/epcr-2.3.12-1/stsmatch_m.cpp:116:9: [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). int fd=open(fname.c_str(),O_RDONLY); data/epcr-2.3.12-1/stsmatch_m.hpp:85:11: [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. const char * m_Primer[2]; data/epcr-2.3.12-1/stsmatch_m.hpp:86:5: [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 m_Length[2]; data/epcr-2.3.12-1/stsmatch_m.hpp:91:5: [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 m_OvhgChars[2]; data/epcr-2.3.12-1/align.cpp:69:24: [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(len == ~0U) len=strlen(seq); data/epcr-2.3.12-1/align.cpp:78:24: [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(len == ~0U) len=strlen(seq); data/epcr-2.3.12-1/bin-io.hpp:96:17: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if( (size_t)read( fd, &t, sizeof( T ) ) != sizeof( T ) && errno ) data/epcr-2.3.12-1/bin-io.hpp:105:29: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if( t.size() && (size_t)read( fd, &t[0], t.size() ) != t.size() && errno ) data/epcr-2.3.12-1/fahash_lookup.cpp:161:2: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read( m_Fd, buff, 16 ); // signature data/epcr-2.3.12-1/faread.cpp:109:20: [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). char * eol=strlen(buffer)+buffer; data/epcr-2.3.12-1/fast_seqio_read.cpp:88:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(read(m_Fd,buff,8) != 8) throw runtime_error(strerror(errno)); data/epcr-2.3.12-1/fast_seqio_read.cpp:121:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(read(m_Fd,buff,8)!=8) throw runtime_error("read failed"); data/epcr-2.3.12-1/hashset.cpp:258: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(ptr)<wdsize) continue; data/epcr-2.3.12-1/minilcs.hpp:222:9: [1] (buffer) mismatch: 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. mismatch: m_Mismatches++; x--; break; data/epcr-2.3.12-1/minilcs.hpp:224:42: [1] (buffer) mismatch: 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(m_Path[y-1][x]=='i') goto mismatch; data/epcr-2.3.12-1/minilcs.hpp:228:44: [1] (buffer) mismatch: 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(m_Path[y+1][x-1]=='d') goto mismatch; data/epcr-2.3.12-1/minilcs.hpp:265:9: [1] (buffer) mismatch: 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. mismatch: data/epcr-2.3.12-1/minilcs.hpp:272:42: [1] (buffer) mismatch: 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(m_Path[y-1][x]=='i') goto mismatch; data/epcr-2.3.12-1/minilcs.hpp:279:44: [1] (buffer) mismatch: 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(m_Path[y+1][x-1]=='d') goto mismatch; data/epcr-2.3.12-1/re-PCR_main.cpp:431:47: [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). char* rev2(FlipSequence(argv[i+1],strlen(argv[i+1]))); data/epcr-2.3.12-1/re-PCR_main.cpp:436:51: [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). char* rev1(FlipSequence(argv[i+0],strlen(argv[i+0]))); data/epcr-2.3.12-1/seqcmp_main.cpp:154:20: [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). char * end=seq+strlen(seq); data/epcr-2.3.12-1/seqcmp_main.cpp:157:13: [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). int len=strlen(primer); data/epcr-2.3.12-1/strref.hpp:48:45: [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). CStrRef(const char * s):m_Data(s),m_Length(strlen(s)) {} data/epcr-2.3.12-1/stsmatch_i.cpp:117:28: [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(seq_len==0) seq_len=strlen(seq_data); data/epcr-2.3.12-1/stsmatch_m.cpp:107:28: [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). return CStrRef(c,cc?cc-c:strlen(c)); data/epcr-2.3.12-1/stsmatch_m.cpp:126:2: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read(fd,m_MemoryBase,m_MemorySize); ANALYSIS SUMMARY: Hits = 104 Lines analyzed = 9659 in approximately 2.64 seconds (3657 lines/second) Physical Source Lines of Code (SLOC) = 5961 Hits@level = [0] 105 [1] 23 [2] 50 [3] 9 [4] 22 [5] 0 Hits@level+ = [0+] 209 [1+] 104 [2+] 81 [3+] 31 [4+] 22 [5+] 0 Hits/KSLOC@level+ = [0+] 35.0612 [1+] 17.4467 [2+] 13.5883 [3+] 5.20047 [4+] 3.69066 [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.