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/dascrubber-1.1/DAScover.c Examining data/dascrubber-1.1/DASedit.c Examining data/dascrubber-1.1/DASmap.c Examining data/dascrubber-1.1/DASpatch.c Examining data/dascrubber-1.1/DASqv.c Examining data/dascrubber-1.1/DASrealign.c Examining data/dascrubber-1.1/DAStrim.c Examining data/dascrubber-1.1/DB.c Examining data/dascrubber-1.1/DB.h Examining data/dascrubber-1.1/QV.c Examining data/dascrubber-1.1/QV.h Examining data/dascrubber-1.1/REPcover.c Examining data/dascrubber-1.1/REPqv.c Examining data/dascrubber-1.1/REPtrim.c Examining data/dascrubber-1.1/align.c Examining data/dascrubber-1.1/align.h FINAL RESULTS: data/dascrubber-1.1/DAScover.c:483:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DAScover.c:488:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DAScover.c:490:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3) data/dascrubber-1.1/DAScover.c:493:27: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2) data/dascrubber-1.1/DAScover.c:495:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2) data/dascrubber-1.1/DASedit.c:297: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dstub,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DASedit.c:311:13: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dstub,DB_FDATA,findx+i,fname,prolog) != 3) data/dascrubber-1.1/DASedit.c:321: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dstub,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DASedit.c:325: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dstub,DB_PARAMS,&bsize,&cutoff,&allflag) != 3) data/dascrubber-1.1/DASedit.c:335:11: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dstub,DB_BDATA,&ufirst,bindx+i) != 2) data/dascrubber-1.1/DASedit.c:716:5: [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(NB_FILE,DB_NFILE,nfiles); data/dascrubber-1.1/DASedit.c:719:7: [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(NB_FILE,DB_FDATA,findx[i],flist[i],plist[i]); data/dascrubber-1.1/DASedit.c:721:5: [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(NB_FILE,DB_NBLOCK,nblocks); data/dascrubber-1.1/DASedit.c:722:5: [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(NB_FILE,DB_PARAMS,bsize,CUTOFF,1); data/dascrubber-1.1/DASedit.c:725:7: [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(NB_FILE,DB_BDATA,bindx[i],bindx[i]); data/dascrubber-1.1/DASpatch.c:784:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DASpatch.c:789:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DASpatch.c:791:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3) data/dascrubber-1.1/DASpatch.c:794:27: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2) data/dascrubber-1.1/DASpatch.c:796:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2) data/dascrubber-1.1/DASqv.c:571:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DASqv.c:576:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DASqv.c:578:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3) data/dascrubber-1.1/DASqv.c:581:27: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2) data/dascrubber-1.1/DASqv.c:583:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2) data/dascrubber-1.1/DAStrim.c:2474:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DAStrim.c:2479:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DAStrim.c:2481:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3) data/dascrubber-1.1/DAStrim.c:2484:27: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2) data/dascrubber-1.1/DAStrim.c:2486:25: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2) data/dascrubber-1.1/DB.c:177:3: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(cat,"%s%s%s%s",path,sep,root,suffix); data/dascrubber-1.1/DB.c:197:3: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(suffix,"%s%d%s",left,num,right); data/dascrubber-1.1/DB.c:469: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbvis,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DB.c:474:11: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbvis,DB_FDATA,&tlast,fname,prolog) != 3) data/dascrubber-1.1/DB.c:478: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbvis,DB_NBLOCK,&nblocks) != 1) data/dascrubber-1.1/DB.c:489:13: [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 the scanf format is influenceable by an attacker, it's exploitable. { if (fscanf(dbvis,DB_PARAMS,&size,&cutoff,&all) != 3) data/dascrubber-1.1/DB.c:501:15: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbvis,DB_BDATA,&ufirst,&tfirst) != 2) data/dascrubber-1.1/DB.c:505:13: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(dbvis,DB_BDATA,&ulast,&tlast) != 2) data/dascrubber-1.1/DB.c:941: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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(istub,DB_NFILE,&nfiles) != 1) data/dascrubber-1.1/DB.c:959:17: [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 the scanf format is influenceable by an attacker, it's exploitable. { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3) data/dascrubber-1.1/DB.c:970:17: [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 the scanf format is influenceable by an attacker, it's exploitable. if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3) data/dascrubber-1.1/DB.c:991:16: [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 the scanf format is influenceable by an attacker, it's exploitable. (void) fscanf(istub,DB_NFILE,&nfiles); data/dascrubber-1.1/DB.c:995:20: [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 the scanf format is influenceable by an attacker, it's exploitable. { (void) fscanf(istub,DB_FDATA,&last,fname,prolog); data/dascrubber-1.1/DB.c:1000:20: [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 the scanf format is influenceable by an attacker, it's exploitable. { (void) fscanf(istub,DB_FDATA,&last,fname,prolog); data/dascrubber-1.1/DB.c:1059:17: [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 the scanf format is influenceable by an attacker, it's exploitable. { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3) data/dascrubber-1.1/DB.c:2096:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(parse->slice,"%s/%s",parse->pwd,parse->root); data/dascrubber-1.1/DB.c:2098:5: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(parse->slice,"%s/%s%c%d-%d%s",parse->pwd,parse->root,BLOCK_SYMBOL,parse->next+1, data/dascrubber-1.1/DB.h:39:17: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. #define EPRINTF sprintf data/dascrubber-1.1/DB.h:45:17: [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 EPRINTF fprintf data/dascrubber-1.1/DB.h:159: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. { if (fprintf(file,__VA_ARGS__) < 0) \ data/dascrubber-1.1/DB.h:164:9: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. { if (printf(__VA_ARGS__) < 0) \ data/dascrubber-1.1/DB.h:194: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 the scanf format is influenceable by an attacker, it's exploitable. { if (fscanf(file,__VA_ARGS__) != Count_Args(#__VA_ARGS__)-1) \ data/dascrubber-1.1/DAScover.c:471: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[2*MAX_NAME+100]; data/dascrubber-1.1/DASedit.c:106: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 *BSTACK[STACK_SIZE]; data/dascrubber-1.1/DASedit.c:309: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 prolog[MAX_NAME], fname[MAX_NAME]; data/dascrubber-1.1/DASedit.c:389: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). afile = fopen(aname,"r"); data/dascrubber-1.1/DASmap.c:52:10: [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 nbuffer[MAX_BUFFER]; data/dascrubber-1.1/DASpatch.c:428:10: [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 *status_string[4] = { "LOWQ", "SPAN", "SPLIT", "NOPAT" }; data/dascrubber-1.1/DASpatch.c:713: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). afile = fopen(aname,"r"); data/dascrubber-1.1/DASpatch.c:772: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[2*MAX_NAME+100]; data/dascrubber-1.1/DASqv.c:470: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). afile = fopen(aname,"r"); data/dascrubber-1.1/DASqv.c:559: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[2*MAX_NAME+100]; data/dascrubber-1.1/DAStrim.c:156: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 Symbol[7] = { 'A', 'L', '[', 'C', ']', 'R', 'D' }; data/dascrubber-1.1/DAStrim.c:1865:10: [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 *status_string[4] = { "LOWQ", "SPAN", "SPLIT", "ADAPT" }; data/dascrubber-1.1/DAStrim.c:2346:16: [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). afile = fopen(aname,"r"); data/dascrubber-1.1/DAStrim.c:2462: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[2*MAX_NAME+100]; data/dascrubber-1.1/DB.c:41: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 Ebuffer[1000]; data/dascrubber-1.1/DB.c:106:12: [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(name,mode)) == NULL) data/dascrubber-1.1/DB.c:287: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. *s++ = (char ) ((s0[i] << 6) | (s1[i] << 4) | (s2[i] << 2) | s3[i]); data/dascrubber-1.1/DB.c:321:10: [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 letter[4] = { 'a', 'c', 'g', 't' }; data/dascrubber-1.1/DB.c:329:10: [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 letter[4] = { 'A', 'C', 'G', 'T' }; data/dascrubber-1.1/DB.c:337:10: [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 letter[4] = { '1', '2', '3', '4' }; data/dascrubber-1.1/DB.c:347:10: [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 number[128] = data/dascrubber-1.1/DB.c:372:10: [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 arrow[128] = data/dascrubber-1.1/DB.c:446:16: [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 ((dbvis = fopen(cat,"r")) == NULL) data/dascrubber-1.1/DB.c:450:20: [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 ((dbvis = fopen(cat,"r")) == NULL) data/dascrubber-1.1/DB.c:466: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 fname[MAX_NAME], prolog[MAX_NAME]; data/dascrubber-1.1/DB.c:938: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 prolog[MAX_NAME], fname[MAX_NAME]; data/dascrubber-1.1/DB.c:1162:16: [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). { afile = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r"); data/dascrubber-1.1/DB.c:1166:16: [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). { afile = fopen(Catenate(db->path,".",track,".anno"),"r"); data/dascrubber-1.1/DB.c:1235:16: [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). { afile = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r"); data/dascrubber-1.1/DB.c:1239: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). { afile = fopen(Catenate(db->path,".",track,".anno"),"r"); data/dascrubber-1.1/DB.c:1258:11: [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). dfile = fopen(name,"r"); data/dascrubber-1.1/DB.c:2037:16: [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 ((input = fopen(Catenate(parse->pwd,"/",disp,".las"),"r")) == NULL) data/dascrubber-1.1/REPcover.c:68: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). afile = fopen(aname,"r"); data/dascrubber-1.1/REPcover.c:78: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). afile = fopen(aname,"r"); data/dascrubber-1.1/REPqv.c:68:21: [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). afile = fopen(aname,"r"); data/dascrubber-1.1/REPqv.c:78: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). afile = fopen(aname,"r"); data/dascrubber-1.1/REPtrim.c:69: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). afile = fopen(aname,"r"); data/dascrubber-1.1/REPtrim.c:79:21: [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). afile = fopen(aname,"r"); data/dascrubber-1.1/align.c:3273: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 ToL[8] = { 'a', 'c', 'g', 't', '.', '[', ']', '-' }; data/dascrubber-1.1/align.c:3274: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 ToU[8] = { 'A', 'C', 'G', 'T', '.', '[', ']', '-' }; data/dascrubber-1.1/DASmap.c:36:12: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int read; data/dascrubber-1.1/DASmap.c:68:40: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). x = sscanf(nbuffer," %d %d %d",&(it->read),&(it->beg),&(it->end)); data/dascrubber-1.1/DASmap.c:245:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). e = iter->read; data/dascrubber-1.1/DB.c:146:15: [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). { epos = strlen(find); data/dascrubber-1.1/DB.c:147:15: [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). epos -= strlen(suffix); data/dascrubber-1.1/DB.c:166:10: [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). len = strlen(path); data/dascrubber-1.1/DB.c:167:10: [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). len += strlen(sep); data/dascrubber-1.1/DB.c:168:10: [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). len += strlen(root); data/dascrubber-1.1/DB.c:169:10: [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). len += strlen(suffix); data/dascrubber-1.1/DB.c:188:10: [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). len = strlen(left); data/dascrubber-1.1/DB.c:189:10: [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). len += strlen(right) + 40; data/dascrubber-1.1/DB.c:424:10: [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). plen = strlen(path); data/dascrubber-1.1/DB.c:718:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). DAZZ_READ read; data/dascrubber-1.1/DB.c:755:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(&read,sizeof(DAZZ_READ),1,indx) != 1) data/dascrubber-1.1/DB.c:760:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:760:54: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:774:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(&read,sizeof(DAZZ_READ),1,indx) != 1) data/dascrubber-1.1/DB.c:779:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:779:54: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:794:24: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(&read,sizeof(DAZZ_READ),1,indx) != 1) data/dascrubber-1.1/DB.c:799:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:799:54: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff) data/dascrubber-1.1/DB.c:849: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). + strlen(db->path)+1 data/dascrubber-1.1/DB.c:864:12: [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(t->name)+1 data/dascrubber-1.1/DB.c:1004:27: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { DAZZ_READ read; data/dascrubber-1.1/DB.c:1007:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (fread(&read,sizeof(DAZZ_READ),1,indx) != 1) data/dascrubber-1.1/DB.c:1012:30: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). fseeko(quiva,read.coff,SEEK_SET); data/dascrubber-1.1/DB.c:1554:10: [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). slen = strlen(extra->name); data/dascrubber-1.1/DB.c:1594:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { char *read; data/dascrubber-1.1/DB.c:1608:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int Load_Read(DAZZ_DB *db, int i, char *read, int ascii) data/dascrubber-1.1/DB.c:1632:17: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(read,clen,1,bases) != 1) data/dascrubber-1.1/DB.c:1637:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). Uncompress_Read(len,read); data/dascrubber-1.1/DB.c:1639:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { Lower_Read(read); data/dascrubber-1.1/DB.c:1640:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = '\0'; data/dascrubber-1.1/DB.c:1643:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { Upper_Read(read); data/dascrubber-1.1/DB.c:1644:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = '\0'; data/dascrubber-1.1/DB.c:1647:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = 4; data/dascrubber-1.1/DB.c:1658:42: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int Load_Arrow(DAZZ_DB *db, int i, char *read, int ascii) data/dascrubber-1.1/DB.c:1687:17: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(read,clen,1,arrow) != 1) data/dascrubber-1.1/DB.c:1692:23: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). Uncompress_Read(len,read); data/dascrubber-1.1/DB.c:1694:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { Letter_Arrow(read); data/dascrubber-1.1/DB.c:1695:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = '\0'; data/dascrubber-1.1/DB.c:1698:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = 4; data/dascrubber-1.1/DB.c:1702:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). char *Load_Subread(DAZZ_DB *db, int i, int beg, int end, char *read, int ascii) data/dascrubber-1.1/DB.c:1730:17: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { if (fread(read,clen,1,bases) != 1) data/dascrubber-1.1/DB.c:1735:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). Uncompress_Read(4*clen,read); data/dascrubber-1.1/DB.c:1737:3: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[len] = 4; data/dascrubber-1.1/DB.c:1739:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { Lower_Read(read); data/dascrubber-1.1/DB.c:1740:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = '\0'; data/dascrubber-1.1/DB.c:1743:18: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { Upper_Read(read); data/dascrubber-1.1/DB.c:1744:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = '\0'; data/dascrubber-1.1/DB.c:1747:5: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[-1] = 4; data/dascrubber-1.1/DB.c:1749:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). return (read); data/dascrubber-1.1/DB.c:1915:12: [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). plen = strlen(path); data/dascrubber-1.1/DB.c:1920:10: [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). rlen = strlen(root); data/dascrubber-1.1/DB.c:1958: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). dlen = strlen(name); data/dascrubber-1.1/DB.c:2089:18: [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 size = strlen(parse->pwd) + strlen(Block_Arg_Root(parse)) + 30; data/dascrubber-1.1/DB.c:2089:39: [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 size = strlen(parse->pwd) + strlen(Block_Arg_Root(parse)) + 30; data/dascrubber-1.1/DB.h:516:42: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int Load_Read(DAZZ_DB *db, int i, char *read, int ascii); data/dascrubber-1.1/DB.h:521:43: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). int Load_Arrow(DAZZ_DB *db, int i, char *read, int ascii); data/dascrubber-1.1/DB.h:530:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). char *Load_Subread(DAZZ_DB *db, int i, int beg, int end, char *read, int ascii); data/dascrubber-1.1/QV.c:386:55: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). static void Encode(HScheme *scheme, FILE *out, uint8 *read, int rlen) data/dascrubber-1.1/QV.c:428:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { x = read[k]; data/dascrubber-1.1/QV.c:448:72: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). static void Encode_Run(HScheme *neme, HScheme *reme, FILE *out, uint8 *read, int rlen, int rchar) data/dascrubber-1.1/QV.c:477:26: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). while (k < rlen && read[k] == rchar) data/dascrubber-1.1/QV.c:489:15: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). { x = read[k]; data/dascrubber-1.1/QV.c:510:52: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). static int Decode(HScheme *scheme, FILE *in, char *read, int rlen) data/dascrubber-1.1/QV.c:583:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j] = (char) c; data/dascrubber-1.1/QV.c:595:9: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j] = (char) c; data/dascrubber-1.1/QV.c:604:69: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). static int Decode_Run(HScheme *neme, HScheme *reme, FILE *in, char *read, data/dascrubber-1.1/QV.c:650:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j++] = (char) rchar; data/dascrubber-1.1/QV.c:661:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j] = (char) c; data/dascrubber-1.1/QV.c:675:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j++] = (char) rchar; data/dascrubber-1.1/QV.c:686:13: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). read[j] = (char) c; data/dascrubber-1.1/QV.c:770:10: [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). rlen = strlen(Read); data/dascrubber-1.1/QV.c:782:15: [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). rlen += strlen(Read+rlen); data/dascrubber-1.1/QV.c:792:25: [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 (rlen != (int) strlen(other)) data/dascrubber-1.1/QV.c:1195:11: [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). len = strlen(coding->prefix); ANALYSIS SUMMARY: Hits = 170 Lines analyzed = 18060 in approximately 0.48 seconds (37410 lines/second) Physical Source Lines of Code (SLOC) = 13997 Hits@level = [0] 836 [1] 78 [2] 40 [3] 0 [4] 52 [5] 0 Hits@level+ = [0+] 1006 [1+] 170 [2+] 92 [3+] 52 [4+] 52 [5+] 0 Hits/KSLOC@level+ = [0+] 71.8725 [1+] 12.1455 [2+] 6.57284 [3+] 3.71508 [4+] 3.71508 [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.