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/libhandy-1-1.0.2/examples/handy-demo.c Examining data/libhandy-1-1.0.2/examples/hdy-demo-preferences-window.c Examining data/libhandy-1-1.0.2/examples/hdy-demo-preferences-window.h Examining data/libhandy-1-1.0.2/examples/hdy-demo-window.c Examining data/libhandy-1-1.0.2/examples/hdy-demo-window.h Examining data/libhandy-1-1.0.2/examples/hdy-view-switcher-demo-window.c Examining data/libhandy-1-1.0.2/examples/hdy-view-switcher-demo-window.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-carousel.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-carousel.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-expander-row.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-expander-row.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-header-bar.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-header-bar.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-header-group.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-header-group.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-leaflet.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-leaflet.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-preferences-page.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-preferences-page.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-preferences-window.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-preferences-window.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-search-bar.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-search-bar.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-swipe-group.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-swipe-group.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-utils.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-utils.h Examining data/libhandy-1-1.0.2/glade/glade-hdy-window.c Examining data/libhandy-1-1.0.2/glade/glade-hdy-window.h Examining data/libhandy-1-1.0.2/src/gtk-window-private.h Examining data/libhandy-1-1.0.2/src/gtk-window.c Examining data/libhandy-1-1.0.2/src/gtkprogresstracker.c Examining data/libhandy-1-1.0.2/src/gtkprogresstrackerprivate.h Examining data/libhandy-1-1.0.2/src/handy.h Examining data/libhandy-1-1.0.2/src/hdy-action-row.c Examining data/libhandy-1-1.0.2/src/hdy-action-row.h Examining data/libhandy-1-1.0.2/src/hdy-animation-private.h Examining data/libhandy-1-1.0.2/src/hdy-animation.c Examining data/libhandy-1-1.0.2/src/hdy-animation.h Examining data/libhandy-1-1.0.2/src/hdy-application-window.c Examining data/libhandy-1-1.0.2/src/hdy-application-window.h Examining data/libhandy-1-1.0.2/src/hdy-avatar.c Examining data/libhandy-1-1.0.2/src/hdy-avatar.h Examining data/libhandy-1-1.0.2/src/hdy-cairo-private.h Examining data/libhandy-1-1.0.2/src/hdy-carousel-box-private.h Examining data/libhandy-1-1.0.2/src/hdy-carousel-box.c Examining data/libhandy-1-1.0.2/src/hdy-carousel-indicator-dots.c Examining data/libhandy-1-1.0.2/src/hdy-carousel-indicator-dots.h Examining data/libhandy-1-1.0.2/src/hdy-carousel-indicator-lines.c Examining data/libhandy-1-1.0.2/src/hdy-carousel-indicator-lines.h Examining data/libhandy-1-1.0.2/src/hdy-carousel.c Examining data/libhandy-1-1.0.2/src/hdy-carousel.h Examining data/libhandy-1-1.0.2/src/hdy-clamp.c Examining data/libhandy-1-1.0.2/src/hdy-clamp.h Examining data/libhandy-1-1.0.2/src/hdy-combo-row.c Examining data/libhandy-1-1.0.2/src/hdy-combo-row.h Examining data/libhandy-1-1.0.2/src/hdy-css-private.h Examining data/libhandy-1-1.0.2/src/hdy-css.c Examining data/libhandy-1-1.0.2/src/hdy-deck.c Examining data/libhandy-1-1.0.2/src/hdy-deck.h Examining data/libhandy-1-1.0.2/src/hdy-deprecation-macros.h Examining data/libhandy-1-1.0.2/src/hdy-enum-value-object.c Examining data/libhandy-1-1.0.2/src/hdy-enum-value-object.h Examining data/libhandy-1-1.0.2/src/hdy-expander-row.c Examining data/libhandy-1-1.0.2/src/hdy-expander-row.h Examining data/libhandy-1-1.0.2/src/hdy-header-bar.c Examining data/libhandy-1-1.0.2/src/hdy-header-bar.h Examining data/libhandy-1-1.0.2/src/hdy-header-group.c Examining data/libhandy-1-1.0.2/src/hdy-header-group.h Examining data/libhandy-1-1.0.2/src/hdy-keypad-button-private.h Examining data/libhandy-1-1.0.2/src/hdy-keypad-button.c Examining data/libhandy-1-1.0.2/src/hdy-keypad.c Examining data/libhandy-1-1.0.2/src/hdy-keypad.h Examining data/libhandy-1-1.0.2/src/hdy-leaflet.c Examining data/libhandy-1-1.0.2/src/hdy-leaflet.h Examining data/libhandy-1-1.0.2/src/hdy-main-private.h Examining data/libhandy-1-1.0.2/src/hdy-main.c Examining data/libhandy-1-1.0.2/src/hdy-main.h Examining data/libhandy-1-1.0.2/src/hdy-navigation-direction.c Examining data/libhandy-1-1.0.2/src/hdy-navigation-direction.h Examining data/libhandy-1-1.0.2/src/hdy-nothing-private.h Examining data/libhandy-1-1.0.2/src/hdy-nothing.c Examining data/libhandy-1-1.0.2/src/hdy-preferences-group-private.h Examining data/libhandy-1-1.0.2/src/hdy-preferences-group.c Examining data/libhandy-1-1.0.2/src/hdy-preferences-group.h Examining data/libhandy-1-1.0.2/src/hdy-preferences-page-private.h Examining data/libhandy-1-1.0.2/src/hdy-preferences-page.c Examining data/libhandy-1-1.0.2/src/hdy-preferences-page.h Examining data/libhandy-1-1.0.2/src/hdy-preferences-row.c Examining data/libhandy-1-1.0.2/src/hdy-preferences-row.h Examining data/libhandy-1-1.0.2/src/hdy-preferences-window.c Examining data/libhandy-1-1.0.2/src/hdy-preferences-window.h Examining data/libhandy-1-1.0.2/src/hdy-search-bar.c Examining data/libhandy-1-1.0.2/src/hdy-search-bar.h Examining data/libhandy-1-1.0.2/src/hdy-shadow-helper-private.h Examining data/libhandy-1-1.0.2/src/hdy-shadow-helper.c Examining data/libhandy-1-1.0.2/src/hdy-squeezer.c Examining data/libhandy-1-1.0.2/src/hdy-squeezer.h Examining data/libhandy-1-1.0.2/src/hdy-stackable-box-private.h Examining data/libhandy-1-1.0.2/src/hdy-stackable-box.c Examining data/libhandy-1-1.0.2/src/hdy-swipe-group.c Examining data/libhandy-1-1.0.2/src/hdy-swipe-group.h Examining data/libhandy-1-1.0.2/src/hdy-swipe-tracker-private.h Examining data/libhandy-1-1.0.2/src/hdy-swipe-tracker.c Examining data/libhandy-1-1.0.2/src/hdy-swipe-tracker.h Examining data/libhandy-1-1.0.2/src/hdy-swipeable.c Examining data/libhandy-1-1.0.2/src/hdy-swipeable.h Examining data/libhandy-1-1.0.2/src/hdy-title-bar.c Examining data/libhandy-1-1.0.2/src/hdy-title-bar.h Examining data/libhandy-1-1.0.2/src/hdy-types.h Examining data/libhandy-1-1.0.2/src/hdy-value-object.c Examining data/libhandy-1-1.0.2/src/hdy-value-object.h Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-bar.c Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-bar.h Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-button-private.h Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-button.c Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-title.c Examining data/libhandy-1-1.0.2/src/hdy-view-switcher-title.h Examining data/libhandy-1-1.0.2/src/hdy-view-switcher.c Examining data/libhandy-1-1.0.2/src/hdy-view-switcher.h Examining data/libhandy-1-1.0.2/src/hdy-window-handle-controller-private.h Examining data/libhandy-1-1.0.2/src/hdy-window-handle-controller.c Examining data/libhandy-1-1.0.2/src/hdy-window-handle.c Examining data/libhandy-1-1.0.2/src/hdy-window-handle.h Examining data/libhandy-1-1.0.2/src/hdy-window-mixin-private.h Examining data/libhandy-1-1.0.2/src/hdy-window-mixin.c Examining data/libhandy-1-1.0.2/src/hdy-window.c Examining data/libhandy-1-1.0.2/src/hdy-window.h Examining data/libhandy-1-1.0.2/tests/test-action-row.c Examining data/libhandy-1-1.0.2/tests/test-application-window.c Examining data/libhandy-1-1.0.2/tests/test-avatar.c Examining data/libhandy-1-1.0.2/tests/test-carousel-indicator-dots.c Examining data/libhandy-1-1.0.2/tests/test-carousel-indicator-lines.c Examining data/libhandy-1-1.0.2/tests/test-carousel.c Examining data/libhandy-1-1.0.2/tests/test-combo-row.c Examining data/libhandy-1-1.0.2/tests/test-deck.c Examining data/libhandy-1-1.0.2/tests/test-expander-row.c Examining data/libhandy-1-1.0.2/tests/test-header-bar.c Examining data/libhandy-1-1.0.2/tests/test-header-group.c Examining data/libhandy-1-1.0.2/tests/test-keypad.c Examining data/libhandy-1-1.0.2/tests/test-leaflet.c Examining data/libhandy-1-1.0.2/tests/test-preferences-group.c Examining data/libhandy-1-1.0.2/tests/test-preferences-page.c Examining data/libhandy-1-1.0.2/tests/test-preferences-row.c Examining data/libhandy-1-1.0.2/tests/test-preferences-window.c Examining data/libhandy-1-1.0.2/tests/test-search-bar.c Examining data/libhandy-1-1.0.2/tests/test-squeezer.c Examining data/libhandy-1-1.0.2/tests/test-swipe-group.c Examining data/libhandy-1-1.0.2/tests/test-value-object.c Examining data/libhandy-1-1.0.2/tests/test-view-switcher-bar.c Examining data/libhandy-1-1.0.2/tests/test-view-switcher.c Examining data/libhandy-1-1.0.2/tests/test-window-handle.c Examining data/libhandy-1-1.0.2/tests/test-window.c FINAL RESULTS: data/libhandy-1-1.0.2/examples/hdy-demo-window.c:399:39: [3] (random) g_random_int_range: 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. first_names[g_random_int_range (0, G_N_ELEMENTS (first_names))], data/libhandy-1-1.0.2/examples/hdy-demo-window.c:400:38: [3] (random) g_random_int_range: 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. last_names[g_random_int_range (0, G_N_ELEMENTS (last_names))]); data/libhandy-1-1.0.2/src/hdy-avatar.c:190:25: [3] (random) g_rand_int_range: 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. self->color_class = g_rand_int_range (rand, 1, NUMBER_OF_COLORS); data/libhandy-1-1.0.2/src/gtkprogresstracker.c:54: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 (dest, source, sizeof (GtkProgressTracker)); data/libhandy-1-1.0.2/src/hdy-avatar.c:187:29: [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 (self->text == NULL || strlen (self->text) == 0) { data/libhandy-1-1.0.2/src/hdy-avatar.c:222:53: [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 (self->layout != NULL || self->text == NULL || strlen (self->text) == 0) data/libhandy-1-1.0.2/src/hdy-preferences-window.c:67:45: [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_autofree gchar *new_str = g_new (gchar, strlen (src) + 1); ANALYSIS SUMMARY: Hits = 7 Lines analyzed = 39405 in approximately 0.78 seconds (50228 lines/second) Physical Source Lines of Code (SLOC) = 25213 Hits@level = [0] 0 [1] 3 [2] 1 [3] 3 [4] 0 [5] 0 Hits@level+ = [0+] 7 [1+] 7 [2+] 4 [3+] 3 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 0.277635 [1+] 0.277635 [2+] 0.158648 [3+] 0.118986 [4+] 0 [5+] 0 Dot directories skipped = 3 (--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.