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.