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/at-spi2-atk-2.38.0/atk-adaptor/accessible-cache.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-cache.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-leasing.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-leasing.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-register.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-register.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-stateset.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/accessible-stateset.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/accessible-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/action-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/adaptors.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/application-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/cache-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/collection-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/component-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/document-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/editabletext-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/hyperlink-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/hypertext-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/image-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/selection-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/socket-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/streamablecontent-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/table-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/table-cell-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/text-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/value-adaptor.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/atk-bridge.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/bitarray.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/bridge.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/bridge.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/event.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/event.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/gtk-2.0/module.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/introspection.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/introspection.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/object.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/object.h
Examining data/at-spi2-atk-2.38.0/atk-adaptor/spi-dbus.c
Examining data/at-spi2-atk-2.38.0/atk-adaptor/spi-dbus.h
Examining data/at-spi2-atk-2.38.0/droute/droute-pairhash.c
Examining data/at-spi2-atk-2.38.0/droute/droute-pairhash.h
Examining data/at-spi2-atk-2.38.0/droute/droute-test.c
Examining data/at-spi2-atk-2.38.0/droute/droute-variant.c
Examining data/at-spi2-atk-2.38.0/droute/droute-variant.h
Examining data/at-spi2-atk-2.38.0/droute/droute.c
Examining data/at-spi2-atk-2.38.0/droute/droute.h
Examining data/at-spi2-atk-2.38.0/tests/atk-object-xml-loader.c
Examining data/at-spi2-atk-2.38.0/tests/atk-object-xml-loader.h
Examining data/at-spi2-atk-2.38.0/tests/atk_suite.c
Examining data/at-spi2-atk-2.38.0/tests/atk_suite.h
Examining data/at-spi2-atk-2.38.0/tests/atk_test_accessible.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_action.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_collection.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_component.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_document.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_editable_text.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_hyperlink.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_hypertext.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_image.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_selection.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_state_set.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_table.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_table_cell.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_text.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_util.c
Examining data/at-spi2-atk-2.38.0/tests/atk_test_util.h
Examining data/at-spi2-atk-2.38.0/tests/atk_test_value.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-action.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-action.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-component.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-component.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-document.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-document.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-editable-text.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-editable-text.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hyperlink.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hyperlink.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hypertext.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hypertext.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-image.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-image.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-object.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-object.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-selection.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-selection.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-table-cell.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-table-cell.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-table.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-table.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-value.c
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-value.h
Examining data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk.h
Examining data/at-spi2-atk-2.38.0/tests/test-application.c

FINAL RESULTS:

data/at-spi2-atk-2.38.0/tests/atk_test_util.c:43:5:  [4] (shell) execlp:
  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.
    execlp (TESTS_BUILD_DIR "/app-test",
data/at-spi2-atk-2.38.0/atk-adaptor/accessible-register.c:258:11:  [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).
  index = atoi (path);
data/at-spi2-atk-2.38.0/atk-adaptor/bridge.c:653: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 buf [80];
data/at-spi2-atk-2.38.0/atk-adaptor/bridge.c:659:3:  [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 (buf, "/proc/%d/status", pid);
data/at-spi2-atk-2.38.0/atk-adaptor/bridge.c:660:8:  [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).
  fp = fopen (buf, "r");
data/at-spi2-atk-2.38.0/atk-adaptor/bridge.c:954:17:  [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).
  if (envvar && atoi (envvar) == 1)
data/at-spi2-atk-2.38.0/droute/droute.c:417: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 (id_str, ":1.%d", id++);
data/at-spi2-atk-2.38.0/tests/atk-object-xml-loader.c:122:9:  [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).
  ret = atoi ((const char *)str);
data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/collection-adaptor.c:703: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).
              memmove (tmp, tmp + 1, strlen (tmp));
data/at-spi2-atk-2.38.0/atk-adaptor/adaptors/collection-adaptor.c:1126:31:  [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).
        const char *p = key + strlen (key);
data/at-spi2-atk-2.38.0/atk-adaptor/event.c:371: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).
    memmove (t, t + 1, strlen (t));
data/at-spi2-atk-2.38.0/atk-adaptor/event.c:384:36:  [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).
  gchar *ret = (gchar *) g_malloc (strlen (name) * 2 + 2);
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hypertext.c:48:14:  [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).
  gint len = strlen (fstr);
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-hypertext.c:49: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).
  gint text_len = strlen (text);
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c:84:7:  [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 (str) < end_offset)
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c:96: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).
  return (gint) strlen (str);
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c:111: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).
  if (offset < 0 && strlen (self->text) <= offset)
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c:273: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).
  const gint length = strlen (self->text);
data/at-spi2-atk-2.38.0/tests/dummyatk/my-atk-text.c:331:14:  [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 (self->text);

ANALYSIS SUMMARY:

Hits = 19
Lines analyzed = 22976 in approximately 0.55 seconds (41793 lines/second)
Physical Source Lines of Code (SLOC) = 17150
Hits@level = [0]   4 [1]  11 [2]   7 [3]   0 [4]   1 [5]   0
Hits@level+ = [0+]  23 [1+]  19 [2+]   8 [3+]   1 [4+]   1 [5+]   0
Hits/KSLOC@level+ = [0+] 1.34111 [1+] 1.10787 [2+] 0.466472 [3+] 0.058309 [4+] 0.058309 [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.