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/gpaste-3.38.3/src/client/gpaste-client.c
Examining data/gpaste-3.38.3/src/daemon/gpaste-daemon.c
Examining data/gpaste-3.38.3/src/libgpaste/client/gpaste-client-item.c
Examining data/gpaste-3.38.3/src/libgpaste/client/gpaste-client-item.h
Examining data/gpaste-3.38.3/src/libgpaste/client/gpaste-client.c
Examining data/gpaste-3.38.3/src/libgpaste/client/gpaste-client.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboard.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboard.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboards-manager.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboards-manager.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-history.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-history.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-image-item.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-image-item.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-item-enums.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-item-enums.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-password-item.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-password-item.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-special-atom.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-special-atom.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-text-item.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-text-item.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-update-enums.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-update-enums.h
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-uris-item.c
Examining data/gpaste-3.38.3/src/libgpaste/core/gpaste-uris-item.h
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-bus-object.c
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-bus-object.h
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-bus.c
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-bus.h
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-daemon.c
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-daemon.h
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-search-provider.c
Examining data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-search-provider.h
Examining data/gpaste-3.38.3/src/libgpaste/gnome-shell-client/gpaste-gnome-shell-client.c
Examining data/gpaste-3.38.3/src/libgpaste/gnome-shell-client/gpaste-gnome-shell-client.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste-gdbus-defines.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste-gdbus-macros.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste-gsettings-keys.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste-gtk-compat.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste-macros.h
Examining data/gpaste-3.38.3/src/libgpaste/gpaste.h
Examining data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c
Examining data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.h
Examining data/gpaste-3.38.3/src/libgpaste/io/gpaste-storage-backend.c
Examining data/gpaste-3.38.3/src/libgpaste/io/gpaste-storage-backend.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-keybinder.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-keybinder.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-make-password-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-make-password-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-pop-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-pop-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-show-history-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-show-history-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-sync-clipboard-to-primary-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-sync-clipboard-to-primary-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-sync-primary-to-clipboard-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-sync-primary-to-clipboard-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-ui-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-ui-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-upload-keybinding.c
Examining data/gpaste-3.38.3/src/libgpaste/keybinder/gpaste-upload-keybinding.h
Examining data/gpaste-3.38.3/src/libgpaste/screensaver-client/gpaste-screensaver-client.c
Examining data/gpaste-3.38.3/src/libgpaste/screensaver-client/gpaste-screensaver-client.h
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-panel.c
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-panel.h
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-stack.c
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-stack.h
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-widget.c
Examining data/gpaste-3.38.3/src/libgpaste/settings-ui/gpaste-settings-ui-widget.h
Examining data/gpaste-3.38.3/src/libgpaste/settings/gpaste-settings.c
Examining data/gpaste-3.38.3/src/libgpaste/settings/gpaste-settings.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-about.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-about.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-backup-history.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-backup-history.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-delete-history.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-delete-history.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-delete-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-delete-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-edit-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-edit-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-empty-history.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-empty-history.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-empty-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-empty-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-header.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-header.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history-action.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history-action.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history-actions.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history-actions.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-history.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item-action.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item-action.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item-skeleton.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item-skeleton.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-new-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-new-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-panel-history.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-panel-history.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-panel.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-panel.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-reexec.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-reexec.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-search-bar.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-search-bar.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-search.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-search.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-settings.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-settings.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-shortcuts-window.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-shortcuts-window.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-switch.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-switch.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-upload-item.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-upload-item.h
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-window.c
Examining data/gpaste-3.38.3/src/libgpaste/ui/gpaste-ui-window.h
Examining data/gpaste-3.38.3/src/libgpaste/util/gpaste-util.c
Examining data/gpaste-3.38.3/src/libgpaste/util/gpaste-util.h
Examining data/gpaste-3.38.3/src/ui/gpaste-ui.c
Examining data/gpaste-3.38.3/tests/gnome-shell-client/test-gnome-shell-client.c

FINAL RESULTS:

data/gpaste-3.38.3/src/daemon/gpaste-daemon.c:24:5:  [4] (shell) execl:
  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.
    execl (PKGLIBEXECDIR "/gpaste-daemon", "gpaste-daemon", NULL);
data/gpaste-3.38.3/src/client/gpaste-client.c:49:17:  [3] (buffer) getopt_long:
  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.
    while ((c = getopt_long(*argc, *argv, "d:hores:vz", long_options, NULL)) != -1)
data/gpaste-3.38.3/src/libgpaste/core/gpaste-uris-item.c:100:82:  [3] (buffer) g_get_home_dir:
  This function is synonymous with 'getenv("HOME")';it returns untrustable
  input if the environment can beset by an attacker. It can have any content
  and length, and the same variable can be set more than once (CWE-807,
  CWE-20). Check environment variables carefully before using them.
    g_autofree gchar *display_string_with_newlines = g_paste_util_replace (uris, g_get_home_dir (), "~");
data/gpaste-3.38.3/src/client/gpaste-client.c:102:17:  [1] (buffer) fgetc:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    while ((c = fgetc (stdin)) != EOF)
data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboard.c:225:22:  [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).
    guint64 length = strlen (to_add);
data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboard.c:229: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).
        !strlen (stripped))
data/gpaste-3.38.3/src/libgpaste/core/gpaste-clipboard.c:360:22:  [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).
            length = strlen (str);
data/gpaste-3.38.3/src/libgpaste/core/gpaste-history.c:1175: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).
            name[strlen (name) - 4] = '\0';
data/gpaste-3.38.3/src/libgpaste/core/gpaste-image-item.c:124:38:  [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).
            priv->additional_size += strlen (priv->checksum) + 1 + gdk_pixbuf_get_byte_length (image);
data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.c:273:24:  [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).
        priv->size -= (strlen (priv->display_string) + 1);
data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.c:280:23:  [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).
        priv->size += strlen (display_string) + 1;
data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.c:306:19:  [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).
    priv->size += strlen (gsv->data);
data/gpaste-3.38.3/src/libgpaste/core/gpaste-item.c:427: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).
    priv->size = strlen (priv->value) + 1;
data/gpaste-3.38.3/src/libgpaste/core/gpaste-password-item.c:62:34:  [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_paste_item_add_size (item, strlen (name) - ((priv->name) ? strlen(priv->name) : 0));
data/gpaste-3.38.3/src/libgpaste/core/gpaste-password-item.c:62:66:  [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_paste_item_add_size (item, strlen (name) - ((priv->name) ? strlen(priv->name) : 0));
data/gpaste-3.38.3/src/libgpaste/core/gpaste-uris-item.c:117:38:  [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_paste_item_add_size (self, strlen (_uris[i]) + 1);
data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-daemon.c:245: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).
        strlen (stripped) != 0)
data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-daemon.c:800:51:  [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_paste_daemon_private_do_add (priv, url, strlen (url), &err);
data/gpaste-3.38.3/src/libgpaste/daemon/gpaste-search-provider.c:75: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 (search) < 3 || !priv->client)
data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c:36:55:  [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_output_stream_write_all (stream, mime, strlen (mime), NULL, NULL /* cancellable */, NULL /* error */) ||
data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c:38:55:  [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_output_stream_write_all (stream, text, strlen (text), NULL, NULL /* cancellable */, NULL /* error */) ||
data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c:89:55:  [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_output_stream_write_all (stream, kind, strlen (kind), NULL, NULL /* cancellable */, NULL /* error */) ||
data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c:91:55:  [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_output_stream_write_all (stream, uuid, strlen (uuid), NULL, NULL /* cancellable */, NULL /* error */) ||
data/gpaste-3.38.3/src/libgpaste/io/gpaste-file-backend.c:94:55:  [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_output_stream_write_all (stream, text, strlen (text), NULL, NULL /* cancellable */, NULL /* error */) ||

ANALYSIS SUMMARY:

Hits = 24
Lines analyzed = 21551 in approximately 0.54 seconds (40207 lines/second)
Physical Source Lines of Code (SLOC) = 13723
Hits@level = [0]  58 [1]  21 [2]   0 [3]   2 [4]   1 [5]   0
Hits@level+ = [0+]  82 [1+]  24 [2+]   3 [3+]   3 [4+]   1 [5+]   0
Hits/KSLOC@level+ = [0+] 5.97537 [1+] 1.74889 [2+] 0.218611 [3+] 0.218611 [4+] 0.0728704 [5+]   0
Dot directories skipped = 2 (--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.