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/python-rtmidi-1.4.5/src/_rtmidi.cpp
Examining data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp
Examining data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.h

FINAL RESULTS:

data/python-rtmidi-1.4.5/src/_rtmidi.cpp:846: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(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:14317:18:  [3] (random) setstate:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
            if (!setstate) PyErr_Clear();
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:14318:18:  [3] (random) setstate:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:14318:58:  [3] (random) setstate:
  This function is not sufficiently random for security-related functions
  such as key and nonce creation (CWE-327). Use a more secure technique for
  acquiring random values.
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:14323:29:  [3] (random) setstate:
  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.
                } else if (!setstate || PyErr_Occurred()) {
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:14343:16:  [3] (random) setstate:
  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.
    Py_XDECREF(setstate);
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:2477:7:  [3] (misc) EnterCriticalSection:
  On some versions of Windows, exceptions can be thrown in low-memory
  situations. Use InitializeCriticalSectionAndSpinCount instead.
      EnterCriticalSection( &(apiData->_mutex) );
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:2631:5:  [3] (misc) EnterCriticalSection:
  On some versions of Windows, exceptions can be thrown in low-memory
  situations. Use InitializeCriticalSectionAndSpinCount instead.
    EnterCriticalSection( &(data->_mutex) );
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:799: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 ascii_chars[128];
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:13684:13:  [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((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:16771: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 ctversion[4], rtversion[4];
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:16775: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 message[200];
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:1190:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char name[128];
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:1265:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char name[128];
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:2372:17:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
  int wlength = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:2377:5:  [2] (buffer) MultiByteToWideChar:
  Requires maximum length in CHARACTERS, not bytes (CWE-120).
    MultiByteToWideChar( CP_ACP, 0, str, -1, &wstrtemp[0], wlength );
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:723:87:  [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).
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:844:52:  [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).
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
data/python-rtmidi-1.4.5/src/_rtmidi.cpp:16819:65:  [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 __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
data/python-rtmidi-1.4.5/src/rtmidi/RtMidi.cpp:1553:21:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
          int res = read( poll_fds[0].fd, &dummy, sizeof(dummy) );

ANALYSIS SUMMARY:

Hits = 20
Lines analyzed = 21117 in approximately 0.61 seconds (34424 lines/second)
Physical Source Lines of Code (SLOC) = 15505
Hits@level = [0]   0 [1]   4 [2]   8 [3]   7 [4]   1 [5]   0
Hits@level+ = [0+]  20 [1+]  20 [2+]  16 [3+]   8 [4+]   1 [5+]   0
Hits/KSLOC@level+ = [0+] 1.28991 [1+] 1.28991 [2+] 1.03193 [3+] 0.515963 [4+] 0.0644953 [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.