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/taopm-1.0/libtao/TaoSynthEngine.cc
Examining data/taopm-1.0/libtao/TaoAccessPoint.cc
Examining data/taopm-1.0/libtao/TaoString.cc
Examining data/taopm-1.0/libtao/TaoRectangle.cc
Examining data/taopm-1.0/libtao/TaoCircle.cc
Examining data/taopm-1.0/libtao/TaoTriangle.cc
Examining data/taopm-1.0/libtao/TaoEllipse.cc
Examining data/taopm-1.0/libtao/TaoBow.cc
Examining data/taopm-1.0/libtao/TaoHammer.cc
Examining data/taopm-1.0/libtao/TaoConnector.cc
Examining data/taopm-1.0/libtao/TaoStop.cc
Examining data/taopm-1.0/libtao/TaoCell.cc
Examining data/taopm-1.0/libtao/Tao.cc
Examining data/taopm-1.0/libtao/TaoDevice.cc
Examining data/taopm-1.0/libtao/TaoInstrument.cc
Examining data/taopm-1.0/libtao/TaoOutput.cc
Examining data/taopm-1.0/libtao/TaoPitch.cc
Examining data/taopm-1.0/libtao/TaoGraphicsEngine.cc
Examining data/taopm-1.0/include/Tao.h
Examining data/taopm-1.0/include/TaoAccessPoint.h
Examining data/taopm-1.0/include/TaoBow.h
Examining data/taopm-1.0/include/TaoCell.h
Examining data/taopm-1.0/include/TaoCircle.h
Examining data/taopm-1.0/include/TaoConnector.h
Examining data/taopm-1.0/include/TaoDevice.h
Examining data/taopm-1.0/include/TaoEllipse.h
Examining data/taopm-1.0/include/TaoGraphicsEngine.h
Examining data/taopm-1.0/include/TaoHammer.h
Examining data/taopm-1.0/include/TaoInstrument.h
Examining data/taopm-1.0/include/TaoOutput.h
Examining data/taopm-1.0/include/TaoPitch.h
Examining data/taopm-1.0/include/TaoRGBColor.h
Examining data/taopm-1.0/include/TaoRectangle.h
Examining data/taopm-1.0/include/TaoStop.h
Examining data/taopm-1.0/include/TaoString.h
Examining data/taopm-1.0/include/TaoSynthEngine.h
Examining data/taopm-1.0/include/TaoTriangle.h
Examining data/taopm-1.0/include/taodefs.h
Examining data/taopm-1.0/taoparse/taoparser.h
Examining data/taopm-1.0/taoparse/taoparserdefs.h
Examining data/taopm-1.0/tao2aiff/tao2aiff.h
Examining data/taopm-1.0/tao2aiff/aupvlist.h
Examining data/taopm-1.0/tao2aiff/audiofile.h
Examining data/taopm-1.0/tao2aiff/tao2aiff.cc
Examining data/taopm-1.0/tao2wav/tao2wav.h
Examining data/taopm-1.0/tao2wav/aupvlist.h
Examining data/taopm-1.0/tao2wav/audiofile.h
Examining data/taopm-1.0/tao2wav/tao2wav.cc

FINAL RESULTS:

data/taopm-1.0/libtao/TaoDevice.cc:39: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(name, deviceName);
data/taopm-1.0/libtao/TaoInstrument.cc:81: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(this->name, name);
data/taopm-1.0/libtao/TaoOutput.cc:74: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(fullfilename, tempname.str().c_str());
data/taopm-1.0/libtao/TaoOutput.cc:104: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(fullfilename, tempname.str().c_str());
data/taopm-1.0/libtao/TaoPitch.cc:145: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(this->name, pitchName);
data/taopm-1.0/libtao/TaoPitch.cc:219: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(name, p.name);
data/taopm-1.0/libtao/TaoPitch.cc:234: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(name, p.name);
data/taopm-1.0/tao2aiff/tao2aiff.cc:57:13:  [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).
    argv++; strcpy(infilename, *argv);
data/taopm-1.0/tao2aiff/tao2aiff.cc:58:13:  [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).
    argv++; strcpy(AIFFfilename, *argv);
data/taopm-1.0/tao2wav/tao2wav.cc:56:13:  [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).
    argv++; strcpy(infilename, *argv);
data/taopm-1.0/tao2wav/tao2wav.cc:57:13:  [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).
    argv++; strcpy(WAVfilename, *argv);
data/taopm-1.0/libtao/Tao.cc:156: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.
	option=getopt(argc, argv, "gs:");
data/taopm-1.0/libtao/TaoGraphicsEngine.cc:182: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.
	option=getopt(argc, argv, "l:");
data/taopm-1.0/libtao/TaoSynthEngine.cc:24:12:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
extern int random();
data/taopm-1.0/libtao/TaoSynthEngine.cc:28:13:  [3] (random) random:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
extern long random();
data/taopm-1.0/libtao/TaoSynthEngine.cc:81:5:  [3] (random) srand:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
    srand(getTime());
data/taopm-1.0/include/TaoDevice.h:80: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 name[30];
data/taopm-1.0/include/TaoInstrument.h:139: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 name[30];
data/taopm-1.0/libtao/Tao.cc:166:13:  [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).
		audioRate=atoi((char *)optarg);
data/taopm-1.0/libtao/TaoDevice.cc:27:5:  [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.
    strcpy(name, "anon");
data/taopm-1.0/libtao/TaoOutput.cc:142:18:  [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).
	    outputfile->open(fullfilename, std::ios::out);
data/taopm-1.0/libtao/TaoOutput.cc:150:14:  [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).
	outputfile->open(fullfilename, std::ios::app);
data/taopm-1.0/libtao/TaoPitch.cc:159:2:  [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.
	strcpy(this->name, "N/A");
data/taopm-1.0/tao2aiff/audiofile.h:446:60:  [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.
int afGetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);
data/taopm-1.0/tao2aiff/audiofile.h:447:61:  [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.
void afSetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);
data/taopm-1.0/tao2aiff/tao2aiff.cc:34: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 AIFFfilename[256];
data/taopm-1.0/tao2aiff/tao2aiff.cc:35: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 infilename[256];
data/taopm-1.0/tao2aiff/tao2aiff.cc:36: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 fileid[20];
data/taopm-1.0/tao2aiff/tao2aiff.cc:65:12:  [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).
    infile.open(infilename);
data/taopm-1.0/tao2wav/audiofile.h:446:60:  [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.
int afGetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);
data/taopm-1.0/tao2wav/audiofile.h:447:61:  [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.
void afSetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);
data/taopm-1.0/tao2wav/tao2wav.cc:33: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 WAVfilename[256];
data/taopm-1.0/tao2wav/tao2wav.cc:34: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 infilename[256];
data/taopm-1.0/tao2wav/tao2wav.cc:35: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 fileid[20];
data/taopm-1.0/tao2wav/tao2wav.cc:64:12:  [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).
    infile.open(infilename);
data/taopm-1.0/libtao/TaoGraphicsEngine.cc:427:17:  [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 = (int) strlen(string);
data/taopm-1.0/libtao/TaoGraphicsEngine.cc:446:17:  [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 = (int) strlen(string);
data/taopm-1.0/libtao/TaoInstrument.cc:60:5:  [1] (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 character.
    strcpy(name, "");
data/taopm-1.0/libtao/TaoPitch.cc:67: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).
    int nameLength=strlen(pitchName);
data/taopm-1.0/libtao/TaoPitch.cc:217:21:  [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).
    name = new char[strlen(p.name)+1];
data/taopm-1.0/libtao/TaoPitch.cc:232:21:  [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).
    name = new char[strlen(p.name)+1];
data/taopm-1.0/tao2aiff/tao2aiff.cc:77:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&fileid[0], 15);
data/taopm-1.0/tao2aiff/tao2aiff.cc:86:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&audioRate, sizeof(int));
data/taopm-1.0/tao2aiff/tao2aiff.cc:87:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&numChannels, sizeof(int));
data/taopm-1.0/tao2aiff/tao2aiff.cc:97:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        infile.read((char *)&floatSamples[0], 1000*sizeof(float));
data/taopm-1.0/tao2aiff/tao2aiff.cc:136:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        infile.read((char *)&floatSamples[0], 1000*sizeof(float));
data/taopm-1.0/tao2wav/tao2wav.cc:76:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&fileid[0], 15);
data/taopm-1.0/tao2wav/tao2wav.cc:85:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&audioRate, sizeof(int));
data/taopm-1.0/tao2wav/tao2wav.cc:86:12:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    infile.read((char *)&numChannels, sizeof(int));
data/taopm-1.0/tao2wav/tao2wav.cc:96:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        infile.read((char *)&floatSamples[0], 1000*sizeof(float));
data/taopm-1.0/tao2wav/tao2wav.cc:135:16:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        infile.read((char *)&floatSamples[0], 1000*sizeof(float));

ANALYSIS SUMMARY:

Hits = 51
Lines analyzed = 9753 in approximately 0.25 seconds (39026 lines/second)
Physical Source Lines of Code (SLOC) = 5995
Hits@level = [0]   0 [1]  16 [2]  19 [3]   5 [4]  11 [5]   0
Hits@level+ = [0+]  51 [1+]  51 [2+]  35 [3+]  16 [4+]  11 [5+]   0
Hits/KSLOC@level+ = [0+] 8.50709 [1+] 8.50709 [2+] 5.8382 [3+] 2.66889 [4+] 1.83486 [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.