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/libpeas-1.28.0/libpeas/gconstructor.h Examining data/libpeas-1.28.0/libpeas/peas-activatable.c Examining data/libpeas-1.28.0/libpeas/peas-activatable.h Examining data/libpeas-1.28.0/libpeas/peas-autocleanups.h Examining data/libpeas-1.28.0/libpeas/peas-debug.c Examining data/libpeas-1.28.0/libpeas/peas-debug.h Examining data/libpeas-1.28.0/libpeas/peas-dirs.c Examining data/libpeas-1.28.0/libpeas/peas-dirs.h Examining data/libpeas-1.28.0/libpeas/peas-engine-priv.h Examining data/libpeas-1.28.0/libpeas/peas-engine.c Examining data/libpeas-1.28.0/libpeas/peas-engine.h Examining data/libpeas-1.28.0/libpeas/peas-extension-base.c Examining data/libpeas-1.28.0/libpeas/peas-extension-base.h Examining data/libpeas-1.28.0/libpeas/peas-extension-set.c Examining data/libpeas-1.28.0/libpeas/peas-extension-set.h Examining data/libpeas-1.28.0/libpeas/peas-extension.c Examining data/libpeas-1.28.0/libpeas/peas-extension.h Examining data/libpeas-1.28.0/libpeas/peas-i18n-priv.h Examining data/libpeas-1.28.0/libpeas/peas-i18n.c Examining data/libpeas-1.28.0/libpeas/peas-introspection.c Examining data/libpeas-1.28.0/libpeas/peas-introspection.h Examining data/libpeas-1.28.0/libpeas/peas-object-module.c Examining data/libpeas-1.28.0/libpeas/peas-object-module.h Examining data/libpeas-1.28.0/libpeas/peas-plugin-info-priv.h Examining data/libpeas-1.28.0/libpeas/peas-plugin-info.c Examining data/libpeas-1.28.0/libpeas/peas-plugin-info.h Examining data/libpeas-1.28.0/libpeas/peas-plugin-loader-c.c Examining data/libpeas-1.28.0/libpeas/peas-plugin-loader-c.h Examining data/libpeas-1.28.0/libpeas/peas-plugin-loader.c Examining data/libpeas-1.28.0/libpeas/peas-plugin-loader.h Examining data/libpeas-1.28.0/libpeas/peas-utils-osx.h Examining data/libpeas-1.28.0/libpeas/peas-utils.c Examining data/libpeas-1.28.0/libpeas/peas-utils.h Examining data/libpeas-1.28.0/libpeas/peas-version-macros.h Examining data/libpeas-1.28.0/libpeas/peas.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-autocleanups.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-configurable.c Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-configurable.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-disable-plugins-dialog.c Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-disable-plugins-dialog.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager-store.c Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager-store.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager-view.c Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager-view.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager.c Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager.h Examining data/libpeas-1.28.0/libpeas-gtk/peas-gtk.h Examining data/libpeas-1.28.0/loaders/lua5.1/peas-lua-internal.c Examining data/libpeas-1.28.0/loaders/lua5.1/peas-lua-internal.h Examining data/libpeas-1.28.0/loaders/lua5.1/peas-lua-utils.c Examining data/libpeas-1.28.0/loaders/lua5.1/peas-lua-utils.h Examining data/libpeas-1.28.0/loaders/lua5.1/peas-plugin-loader-lua.c Examining data/libpeas-1.28.0/loaders/lua5.1/peas-plugin-loader-lua.h Examining data/libpeas-1.28.0/loaders/python/peas-plugin-loader-python.c Examining data/libpeas-1.28.0/loaders/python/peas-plugin-loader-python.h Examining data/libpeas-1.28.0/loaders/python/peas-python-internal.c Examining data/libpeas-1.28.0/loaders/python/peas-python-internal.h Examining data/libpeas-1.28.0/peas-demo/peas-demo-window.c Examining data/libpeas-1.28.0/peas-demo/peas-demo-window.h Examining data/libpeas-1.28.0/peas-demo/peas-demo.c Examining data/libpeas-1.28.0/peas-demo/plugins/helloworld/peasdemo-hello-world-configurable.c Examining data/libpeas-1.28.0/peas-demo/plugins/helloworld/peasdemo-hello-world-configurable.h Examining data/libpeas-1.28.0/peas-demo/plugins/helloworld/peasdemo-hello-world-plugin.c Examining data/libpeas-1.28.0/peas-demo/plugins/helloworld/peasdemo-hello-world-plugin.h Examining data/libpeas-1.28.0/peas-demo/plugins/secondtime/second-time.c Examining data/libpeas-1.28.0/peas-demo/plugins/secondtime/second-time.h Examining data/libpeas-1.28.0/tests/libpeas/engine.c Examining data/libpeas-1.28.0/tests/libpeas/extension-c.c Examining data/libpeas-1.28.0/tests/libpeas/extension-lua.c Examining data/libpeas-1.28.0/tests/libpeas/extension-py.c Examining data/libpeas-1.28.0/tests/libpeas/extension-set.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-abstract.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-abstract.h Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-base.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-base.h Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-callable.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-callable.h Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-has-prerequisite.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-has-prerequisite.h Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-prerequisite.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-prerequisite.h Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-unimplemented.c Examining data/libpeas-1.28.0/tests/libpeas/introspection/introspection-unimplemented.h Examining data/libpeas-1.28.0/tests/libpeas/plugin-info.c Examining data/libpeas-1.28.0/tests/libpeas/plugins/embedded/embedded-plugin.c Examining data/libpeas-1.28.0/tests/libpeas/plugins/embedded/embedded-plugin.h Examining data/libpeas-1.28.0/tests/libpeas/plugins/extension-c/extension-c-abstract.c Examining data/libpeas-1.28.0/tests/libpeas/plugins/extension-c/extension-c-abstract.h Examining data/libpeas-1.28.0/tests/libpeas/plugins/extension-c/extension-c-missing-symbol-plugin.c Examining data/libpeas-1.28.0/tests/libpeas/plugins/extension-c/extension-c-plugin.c Examining data/libpeas-1.28.0/tests/libpeas/plugins/extension-c/extension-c-plugin.h Examining data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c Examining data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.h Examining data/libpeas-1.28.0/tests/libpeas/testing/testing.c Examining data/libpeas-1.28.0/tests/libpeas/testing/testing.h Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugin-manager-store.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugin-manager-view.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugin-manager.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugins/builtin-configurable/builtin-configurable.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugins/builtin-configurable/builtin-configurable.h Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugins/configurable/configurable-plugin.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/plugins/configurable/configurable-plugin.h Examining data/libpeas-1.28.0/tests/libpeas-gtk/testing/testing.c Examining data/libpeas-1.28.0/tests/libpeas-gtk/testing/testing.h Examining data/libpeas-1.28.0/tests/plugins/builtin/builtin-plugin.c Examining data/libpeas-1.28.0/tests/plugins/builtin/builtin-plugin.h Examining data/libpeas-1.28.0/tests/plugins/has-dep/has-dep-plugin.c Examining data/libpeas-1.28.0/tests/plugins/has-dep/has-dep-plugin.h Examining data/libpeas-1.28.0/tests/plugins/loadable/loadable-plugin.c Examining data/libpeas-1.28.0/tests/plugins/loadable/loadable-plugin.h Examining data/libpeas-1.28.0/tests/plugins/self-dep/self-dep-plugin.c Examining data/libpeas-1.28.0/tests/plugins/self-dep/self-dep-plugin.h Examining data/libpeas-1.28.0/tests/testing-util/testing-util.c Examining data/libpeas-1.28.0/tests/testing-util/testing-util.h FINAL RESULTS: data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c:593:8: [3] (random) g_random_int: 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. in = g_random_int (); data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c:594:11: [3] (random) g_random_int: 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. inout = g_random_int (); data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c:603:8: [3] (random) g_random_int: 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. in = g_random_int (); data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c:604:11: [3] (random) g_random_int: 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. inout = g_random_int (); data/libpeas-1.28.0/libpeas/peas-plugin-loader-c.c:129:3: [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 (exten_parameters, parameters, sizeof (GParameter) * n_parameters); data/libpeas-1.28.0/libpeas-gtk/peas-gtk-plugin-manager-view.c:288:13: [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). key_len = strlen (case_normalized_key); data/libpeas-1.28.0/libpeas/gconstructor.h:36: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/libpeas-1.28.0/libpeas/gconstructor.h:42: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/libpeas-1.28.0/libpeas/gconstructor.h:54:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). section(".CRT$XCU",read) data/libpeas-1.28.0/libpeas/gconstructor.h:61:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). section(".CRT$XCU",read) data/libpeas-1.28.0/libpeas/peas-engine.c:265:30: [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). module_path = module_dir + strlen ("resource://"); data/libpeas-1.28.0/libpeas/peas-object-module.c:121: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). path[strlen (path) - strlen (G_MODULE_SUFFIX) - 1] = '\0'; data/libpeas-1.28.0/libpeas/peas-object-module.c:121:30: [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). path[strlen (path) - strlen (G_MODULE_SUFFIX) - 1] = '\0'; data/libpeas-1.28.0/libpeas/peas-plugin-info.c:144: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). bytes = g_resources_lookup_data (filename + strlen ("resource://"), data/libpeas-1.28.0/libpeas/peas-utils.c:315: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). len = strlen (loader); data/libpeas-1.28.0/tests/libpeas/testing/testing-extension.c:660:32: [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). loader_name = g_new0 (gchar, strlen (loader) + 1); ANALYSIS SUMMARY: Hits = 16 Lines analyzed = 20298 in approximately 0.65 seconds (31037 lines/second) Physical Source Lines of Code (SLOC) = 12063 Hits@level = [0] 0 [1] 11 [2] 1 [3] 4 [4] 0 [5] 0 Hits@level+ = [0+] 16 [1+] 16 [2+] 5 [3+] 4 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 1.32637 [1+] 1.32637 [2+] 0.414491 [3+] 0.331592 [4+] 0 [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.