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/seriousproton-2020.01.15+dfsg/src/P.h
Examining data/seriousproton-2020.01.15+dfsg/src/PlayerController.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/PlayerController.h
Examining data/seriousproton-2020.01.15+dfsg/src/Renderable.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/Renderable.h
Examining data/seriousproton-2020.01.15+dfsg/src/Updatable.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/Updatable.h
Examining data/seriousproton-2020.01.15+dfsg/src/clipboard.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/clipboard.h
Examining data/seriousproton-2020.01.15+dfsg/src/collisionable.h
Examining data/seriousproton-2020.01.15+dfsg/src/dtoa/dtoa_milo.h
Examining data/seriousproton-2020.01.15+dfsg/src/engine.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/engine.h
Examining data/seriousproton-2020.01.15+dfsg/src/event.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/event.h
Examining data/seriousproton-2020.01.15+dfsg/src/fixedSocket.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/fixedSocket.h
Examining data/seriousproton-2020.01.15+dfsg/src/gameEntity.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/gameEntity.h
Examining data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/httpServer.h
Examining data/seriousproton-2020.01.15+dfsg/src/input.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/input.h
Examining data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/json11/json11.hpp
Examining data/seriousproton-2020.01.15+dfsg/src/logging.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/logging.h
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer.h
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_client.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_client.h
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_internal.h
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_server.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_server.h
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_server_scanner.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/multiplayer_server_scanner.h
Examining data/seriousproton-2020.01.15+dfsg/src/networkAudioStream.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/networkAudioStream.h
Examining data/seriousproton-2020.01.15+dfsg/src/networkRecorder.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/networkRecorder.h
Examining data/seriousproton-2020.01.15+dfsg/src/postProcessManager.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/postProcessManager.h
Examining data/seriousproton-2020.01.15+dfsg/src/random.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/random.h
Examining data/seriousproton-2020.01.15+dfsg/src/resources.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/resources.h
Examining data/seriousproton-2020.01.15+dfsg/src/scriptInterface.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/scriptInterface.h
Examining data/seriousproton-2020.01.15+dfsg/src/scriptInterfaceMagic.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/shaderManager.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/shaderManager.h
Examining data/seriousproton-2020.01.15+dfsg/src/soundManager.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/soundManager.h
Examining data/seriousproton-2020.01.15+dfsg/src/stringImproved.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/stringImproved.h
Examining data/seriousproton-2020.01.15+dfsg/src/textureManager.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/textureManager.h
Examining data/seriousproton-2020.01.15+dfsg/src/tween.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/tween.h
Examining data/seriousproton-2020.01.15+dfsg/src/vectorUtils.h
Examining data/seriousproton-2020.01.15+dfsg/src/windowManager.cpp
Examining data/seriousproton-2020.01.15+dfsg/src/windowManager.h
Examining data/seriousproton-2020.01.15+dfsg/src/scriptInterfaceMagic.h
Examining data/seriousproton-2020.01.15+dfsg/src/collisionable.cpp

FINAL RESULTS:

data/seriousproton-2020.01.15+dfsg/src/clipboard.cpp:33:18:  [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.
    FILE* pipe = popen("/usr/bin/xclip -o -selection clipboard", "r");
data/seriousproton-2020.01.15+dfsg/src/clipboard.cpp:83:18:  [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.
    FILE* pipe = popen("/usr/bin/xclip -i -selection clipboard -silent", "we");
data/seriousproton-2020.01.15+dfsg/src/json11/json11.hpp:65:17:  [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.
        #ifndef snprintf
data/seriousproton-2020.01.15+dfsg/src/json11/json11.hpp:66:21:  [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_s
data/seriousproton-2020.01.15+dfsg/src/logging.cpp:14:25:  [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 print_func(...) fprintf(Logging::log_stream, __VA_ARGS__)
data/seriousproton-2020.01.15+dfsg/src/random.cpp:15:7:  [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.
float random(float fmin, float fmax)
data/seriousproton-2020.01.15+dfsg/src/random.h:6:7:  [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.
float random(float fmin, float fmax);
data/seriousproton-2020.01.15+dfsg/src/scriptInterface.cpp:7: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.
static int random(lua_State* L)
data/seriousproton-2020.01.15+dfsg/src/scriptInterface.cpp:12:23:  [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.
    lua_pushnumber(L, random(rMin, rMax));
data/seriousproton-2020.01.15+dfsg/src/scriptInterface.cpp:17:26:  [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.
REGISTER_SCRIPT_FUNCTION(random);
data/seriousproton-2020.01.15+dfsg/src/windowManager.cpp:12: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(time(NULL));
data/seriousproton-2020.01.15+dfsg/src/clipboard.cpp:39: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[1024];
data/seriousproton-2020.01.15+dfsg/src/clipboard.cpp:76:5:  [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(GlobalLock(string_handle), value.c_str(), string_size);
data/seriousproton-2020.01.15+dfsg/src/dtoa/dtoa_milo.h:325:15:  [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 const char cDigitsLut[200] = {
data/seriousproton-2020.01.15+dfsg/src/fixedSocket.cpp:63:9:  [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(backlog_data_block, reinterpret_cast<const char*>(&packetSize) + sent, sizeof(packetSize) - sent);
data/seriousproton-2020.01.15+dfsg/src/fixedSocket.cpp:64:9:  [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(backlog_data_block + sizeof(packetSize) - sent, data, size);
data/seriousproton-2020.01.15+dfsg/src/fixedSocket.cpp:74:9:  [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(backlog_data_block, reinterpret_cast<const char*>(data) + sent, backlog_data_block_size);
data/seriousproton-2020.01.15+dfsg/src/fixedSocket.cpp:89: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(new_block, backlog_data_block + sent, backlog_data_block_size - sent);
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:61: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[1024];
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:69:5:  [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(recvBuffer + recvBufferCount, buffer, size);
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:329:9:  [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(fullPath.c_str(), "rb");
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:335: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 buffer[1024];
data/seriousproton-2020.01.15+dfsg/src/httpServer.h:49: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 recvBuffer[recvBufferSize];
data/seriousproton-2020.01.15+dfsg/src/httpServer.h:51:25:  [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 static signed char HEX2DEC[256];
data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp:59: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 buf[32];
data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp:68: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 buf[32];
data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp:96: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 buf[8];
data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp:329: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 buf[12];
data/seriousproton-2020.01.15+dfsg/src/json11/json11.cpp:594: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).
            return std::atoi(str.c_str() + start_pos);
data/seriousproton-2020.01.15+dfsg/src/logging.cpp:63: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).
    log_stream = fopen(filename.c_str(), "wt");
data/seriousproton-2020.01.15+dfsg/src/networkRecorder.cpp:68:9:  [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(&sample_buffer[old_size], samples, sizeof(sf::Int16) * sample_count);
data/seriousproton-2020.01.15+dfsg/src/resources.cpp:53:31:  [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).
        open_success = stream.open(filename);
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:41:38:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
                if (!connections[n]->read())
data/seriousproton-2020.01.15+dfsg/src/httpServer.cpp:59:28:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
bool HttpServerConnection::read()
data/seriousproton-2020.01.15+dfsg/src/httpServer.h:60:10:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    bool read();
data/seriousproton-2020.01.15+dfsg/src/resources.cpp:38:13:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        if (read(&c, 1) < 1)
data/seriousproton-2020.01.15+dfsg/src/resources.cpp:64:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    virtual sf::Int64 read(void* data, sf::Int64 size)
data/seriousproton-2020.01.15+dfsg/src/resources.cpp:66:23:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
        return stream.read(data, size);

ANALYSIS SUMMARY:

Hits = 38
Lines analyzed = 10451 in approximately 0.26 seconds (40258 lines/second)
Physical Source Lines of Code (SLOC) = 8070
Hits@level = [0]  12 [1]   6 [2]  21 [3]   6 [4]   5 [5]   0
Hits@level+ = [0+]  50 [1+]  38 [2+]  32 [3+]  11 [4+]   5 [5+]   0
Hits/KSLOC@level+ = [0+] 6.19579 [1+] 4.7088 [2+] 3.9653 [3+] 1.36307 [4+] 0.619579 [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.