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/virt-viewer-9.0/tests/test-hotkeys.c
Examining data/virt-viewer-9.0/tests/test-monitor-mapping.c
Examining data/virt-viewer-9.0/tests/redirect-test.c
Examining data/virt-viewer-9.0/tests/test-monitor-alignment.c
Examining data/virt-viewer-9.0/tests/test-version-compare.c
Examining data/virt-viewer-9.0/src/virt-viewer-display.c
Examining data/virt-viewer-9.0/src/remote-viewer-main.c
Examining data/virt-viewer-9.0/src/virt-viewer-display-spice.h
Examining data/virt-viewer-9.0/src/remote-viewer.c
Examining data/virt-viewer-9.0/src/glib-compat.c
Examining data/virt-viewer-9.0/src/virt-viewer-vm-connection.c
Examining data/virt-viewer-9.0/src/virt-viewer-session-vnc.h
Examining data/virt-viewer-9.0/src/ovirt-foreign-menu.h
Examining data/virt-viewer-9.0/src/remote-viewer.h
Examining data/virt-viewer-9.0/src/virt-viewer-session-spice.h
Examining data/virt-viewer-9.0/src/remote-viewer-connect.c
Examining data/virt-viewer-9.0/src/virt-viewer-display-vte.h
Examining data/virt-viewer-9.0/src/virt-viewer-enums.c
Examining data/virt-viewer-9.0/src/remote-viewer-iso-list-dialog.h
Examining data/virt-viewer-9.0/src/virt-viewer-window.h
Examining data/virt-viewer-9.0/src/virt-viewer-file-transfer-dialog.c
Examining data/virt-viewer-9.0/src/glib-compat.h
Examining data/virt-viewer-9.0/src/virt-viewer-resources.h
Examining data/virt-viewer-9.0/src/virt-viewer-timed-revealer.h
Examining data/virt-viewer-9.0/src/virt-viewer-session-vnc.c
Examining data/virt-viewer-9.0/src/virt-viewer-display-vnc.c
Examining data/virt-viewer-9.0/src/virt-viewer-auth.c
Examining data/virt-viewer-9.0/src/virt-viewer-notebook.c
Examining data/virt-viewer-9.0/src/virt-viewer-session-spice.c
Examining data/virt-viewer-9.0/src/virt-viewer-notebook.h
Examining data/virt-viewer-9.0/src/virt-viewer-auth.h
Examining data/virt-viewer-9.0/src/virt-viewer-display-spice.c
Examining data/virt-viewer-9.0/src/virt-viewer-util.c
Examining data/virt-viewer-9.0/src/virt-viewer-main.c
Examining data/virt-viewer-9.0/src/virt-viewer-display.h
Examining data/virt-viewer-9.0/src/windows-cmdline-wrapper.c
Examining data/virt-viewer-9.0/src/virt-viewer-resources.c
Examining data/virt-viewer-9.0/src/ovirt-foreign-menu.c
Examining data/virt-viewer-9.0/src/virt-viewer.h
Examining data/virt-viewer-9.0/src/virt-viewer-util.h
Examining data/virt-viewer-9.0/src/virt-viewer-session.h
Examining data/virt-viewer-9.0/src/virt-viewer-app.c
Examining data/virt-viewer-9.0/src/virt-viewer-file.h
Examining data/virt-viewer-9.0/src/virt-viewer-enums.h
Examining data/virt-viewer-9.0/src/virt-viewer-file-transfer-dialog.h
Examining data/virt-viewer-9.0/src/virt-viewer-app.h
Examining data/virt-viewer-9.0/src/remote-viewer-connect.h
Examining data/virt-viewer-9.0/src/virt-viewer-display-vte.c
Examining data/virt-viewer-9.0/src/virt-viewer-window.c
Examining data/virt-viewer-9.0/src/virt-viewer-file.c
Examining data/virt-viewer-9.0/src/virt-viewer-timed-revealer.c
Examining data/virt-viewer-9.0/src/remote-viewer-iso-list-dialog.c
Examining data/virt-viewer-9.0/src/virt-viewer.c
Examining data/virt-viewer-9.0/src/virt-viewer-display-vnc.h
Examining data/virt-viewer-9.0/src/virt-viewer-vm-connection.h
Examining data/virt-viewer-9.0/src/virt-viewer-session.c

FINAL RESULTS:

data/virt-viewer-9.0/src/virt-viewer-app.c:701:9:  [4] (shell) execvp:
  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.
        execvp("ssh", (char *const*)cmd);
data/virt-viewer-9.0/src/virt-viewer-app.c:773: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(addr.sun_path, unixsock);
data/virt-viewer-9.0/tests/redirect-test.c:152:12:  [3] (shell) CreateProcess:
  This causes a new process to execute and is difficult to use safely
  (CWE-78). Specify the application path in the first argument, NOT as part
  of the second, or embedded spaces could allow an attacker to force a
  different program to run.
    assert(CreateProcess(NULL, program, NULL, NULL, inherit, 0, NULL, NULL, &si, &pi));
data/virt-viewer-9.0/tests/redirect-test.c:152:12:  [3] (shell) CreateProcess:
  This causes a new process to execute and is difficult to use safely
  (CWE-78). Specify the application path in the first argument, NOT as part
  of the second, or embedded spaces could allow an attacker to force a
  different program to run.
    assert(CreateProcess(NULL, program, NULL, NULL, inherit, 0, NULL, NULL, &si, &pi));
data/virt-viewer-9.0/src/virt-viewer-app.c:717: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 *cmd[10];
data/virt-viewer-9.0/src/virt-viewer-app.c:718: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 portstr[50];
data/virt-viewer-9.0/src/virt-viewer-app.c:725: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(portstr, "%d", sshport);
data/virt-viewer-9.0/src/virt-viewer.c:366:18:  [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.
        unsigned char uuid[16];
data/virt-viewer-9.0/src/virt-viewer.c:389:14:  [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.
    unsigned char wantuuid[16];
data/virt-viewer-9.0/src/virt-viewer.c:390:14:  [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.
    unsigned char domuuid[16];
data/virt-viewer-9.0/src/virt-viewer.c:872: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 uuid_string[VIR_UUID_STRING_BUFLEN];
data/virt-viewer-9.0/src/windows-cmdline-wrapper.c:55:5:  [2] (buffer) TCHAR:
  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.
    TCHAR name[MAX_PATH];
data/virt-viewer-9.0/tests/redirect-test.c:107: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 program[MAX_PATH+128];
data/virt-viewer-9.0/tests/redirect-test.c:110:5:  [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(strchr(program, 0) , "\" %d", num_test);
data/virt-viewer-9.0/tests/redirect-test.c:157:13:  [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_f = fopen("log.txt", "a");
data/virt-viewer-9.0/tests/redirect-test.c:170: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).
    FILE *f = fopen(fn, "r");
data/virt-viewer-9.0/tests/redirect-test.c:174:12:  [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 buf[1024];
data/virt-viewer-9.0/tests/redirect-test.c:233: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 stdout_line[64], stderr_line[64];
data/virt-viewer-9.0/tests/redirect-test.c:235:5:  [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(stdout_line, "stdout %d line", num_test);
data/virt-viewer-9.0/tests/redirect-test.c:236:5:  [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(stderr_line, "stderr %d line", num_test);
data/virt-viewer-9.0/tests/redirect-test.c:306: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 *argv[10], *p;
data/virt-viewer-9.0/tests/redirect-test.c:314:13:  [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_f = fopen("log.txt", argc >= 1 ? "a" : "w");
data/virt-viewer-9.0/src/ovirt-foreign-menu.c:1056:54:  [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).
        ca = g_byte_array_new_take((guint8 *)ca_str, strlen(ca_str) + 1);
data/virt-viewer-9.0/src/virt-viewer-app.c:503:37:  [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).
            g_snprintf(mappings[i], strlen(mappings[i]) + 1, "%d:%d",
data/virt-viewer-9.0/src/virt-viewer-app.c:765:9:  [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(unixsock) + 1 > sizeof(addr.sun_path)) {
data/virt-viewer-9.0/src/virt-viewer-resources.c:11711:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  __pragma(section(".CRT$XCU",read)) \
data/virt-viewer-9.0/src/virt-viewer-resources.c:11719:31:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  __pragma(section(".CRT$XCU",read)) \
data/virt-viewer-9.0/src/virt-viewer-resources.c:11731:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  section(".CRT$XCU",read)
data/virt-viewer-9.0/src/virt-viewer-resources.c:11738:22:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
  section(".CRT$XCU",read)
data/virt-viewer-9.0/src/virt-viewer-session-spice.c:570:62:  [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).
        GByteArray *ba = g_byte_array_new_take((guint8 *)ca, strlen(ca) + 1);
data/virt-viewer-9.0/src/virt-viewer.c:1020:37:  [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).
                cred[i].resultlen = strlen(cred[i].result);
data/virt-viewer-9.0/src/windows-cmdline-wrapper.c:65:9:  [1] (buffer) strncpy:
  Easily used incorrectly; doesn't always \0-terminate or check for invalid
  pointers [MS-banned] (CWE-120). Risk is low because the source is a
  constant string.
        strncpy(name + len - 3, "exe", 3);
data/virt-viewer-9.0/tests/redirect-test.c:221: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).
        memmove(p, p+1, strlen(p));

ANALYSIS SUMMARY:

Hits = 33
Lines analyzed = 30419 in approximately 1.52 seconds (19955 lines/second)
Physical Source Lines of Code (SLOC) = 25383
Hits@level = [0]  16 [1]  11 [2]  18 [3]   2 [4]   2 [5]   0
Hits@level+ = [0+]  49 [1+]  33 [2+]  22 [3+]   4 [4+]   2 [5+]   0
Hits/KSLOC@level+ = [0+] 1.93043 [1+] 1.30008 [2+] 0.866722 [3+] 0.157586 [4+] 0.0787929 [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.