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/phosh-0.6.0/src/activity.c Examining data/phosh-0.6.0/src/activity.h Examining data/phosh-0.6.0/src/animation.c Examining data/phosh-0.6.0/src/animation.h Examining data/phosh-0.6.0/src/app-grid-button.c Examining data/phosh-0.6.0/src/app-grid-button.h Examining data/phosh-0.6.0/src/app-grid.c Examining data/phosh-0.6.0/src/app-grid.h Examining data/phosh-0.6.0/src/app-list-model.c Examining data/phosh-0.6.0/src/app-list-model.h Examining data/phosh-0.6.0/src/arrow.c Examining data/phosh-0.6.0/src/arrow.h Examining data/phosh-0.6.0/src/auth.c Examining data/phosh-0.6.0/src/auth.h Examining data/phosh-0.6.0/src/background-manager.c Examining data/phosh-0.6.0/src/background-manager.h Examining data/phosh-0.6.0/src/background.c Examining data/phosh-0.6.0/src/background.h Examining data/phosh-0.6.0/src/batteryinfo.c Examining data/phosh-0.6.0/src/batteryinfo.h Examining data/phosh-0.6.0/src/bt-info.c Examining data/phosh-0.6.0/src/bt-info.h Examining data/phosh-0.6.0/src/bt-manager.c Examining data/phosh-0.6.0/src/bt-manager.h Examining data/phosh-0.6.0/src/connectivity-info.c Examining data/phosh-0.6.0/src/connectivity-info.h Examining data/phosh-0.6.0/src/contrib/shell-network-agent.c Examining data/phosh-0.6.0/src/contrib/shell-network-agent.h Examining data/phosh-0.6.0/src/docked-info.c Examining data/phosh-0.6.0/src/docked-info.h Examining data/phosh-0.6.0/src/docked-manager.c Examining data/phosh-0.6.0/src/docked-manager.h Examining data/phosh-0.6.0/src/fader.c Examining data/phosh-0.6.0/src/fader.h Examining data/phosh-0.6.0/src/favorite-list-model.c Examining data/phosh-0.6.0/src/favorite-list-model.h Examining data/phosh-0.6.0/src/feedback-manager.c Examining data/phosh-0.6.0/src/feedback-manager.h Examining data/phosh-0.6.0/src/feedbackinfo.c Examining data/phosh-0.6.0/src/feedbackinfo.h Examining data/phosh-0.6.0/src/gtk-list-models/gtkfilterlistmodel.c Examining data/phosh-0.6.0/src/gtk-list-models/gtkfilterlistmodel.h Examining data/phosh-0.6.0/src/gtk-list-models/gtkrbtree.c Examining data/phosh-0.6.0/src/gtk-list-models/gtkrbtreeprivate.h Examining data/phosh-0.6.0/src/gtk-list-models/gtksortlistmodel.c Examining data/phosh-0.6.0/src/gtk-list-models/gtksortlistmodel.h Examining data/phosh-0.6.0/src/home.c Examining data/phosh-0.6.0/src/home.h Examining data/phosh-0.6.0/src/idle-manager.c Examining data/phosh-0.6.0/src/idle-manager.h Examining data/phosh-0.6.0/src/keyboard-events.c Examining data/phosh-0.6.0/src/keyboard-events.h Examining data/phosh-0.6.0/src/layersurface.c Examining data/phosh-0.6.0/src/layersurface.h Examining data/phosh-0.6.0/src/lockscreen-manager.c Examining data/phosh-0.6.0/src/lockscreen-manager.h Examining data/phosh-0.6.0/src/lockscreen.c Examining data/phosh-0.6.0/src/lockscreen.h Examining data/phosh-0.6.0/src/lockshield.c Examining data/phosh-0.6.0/src/lockshield.h Examining data/phosh-0.6.0/src/log.c Examining data/phosh-0.6.0/src/log.h Examining data/phosh-0.6.0/src/main.c Examining data/phosh-0.6.0/src/media-player.c Examining data/phosh-0.6.0/src/media-player.h Examining data/phosh-0.6.0/src/mode-manager.c Examining data/phosh-0.6.0/src/mode-manager.h Examining data/phosh-0.6.0/src/monitor-manager.c Examining data/phosh-0.6.0/src/monitor-manager.h Examining data/phosh-0.6.0/src/monitor/head.c Examining data/phosh-0.6.0/src/monitor/head.h Examining data/phosh-0.6.0/src/monitor/monitor.c Examining data/phosh-0.6.0/src/monitor/monitor.h Examining data/phosh-0.6.0/src/network-auth-prompt.c Examining data/phosh-0.6.0/src/network-auth-prompt.h Examining data/phosh-0.6.0/src/notifications/notification-banner.c Examining data/phosh-0.6.0/src/notifications/notification-banner.h Examining data/phosh-0.6.0/src/notifications/notification-content.c Examining data/phosh-0.6.0/src/notifications/notification-content.h Examining data/phosh-0.6.0/src/notifications/notification-frame.c Examining data/phosh-0.6.0/src/notifications/notification-frame.h Examining data/phosh-0.6.0/src/notifications/notification-list.c Examining data/phosh-0.6.0/src/notifications/notification-list.h Examining data/phosh-0.6.0/src/notifications/notification-source.c Examining data/phosh-0.6.0/src/notifications/notification-source.h Examining data/phosh-0.6.0/src/notifications/notification.c Examining data/phosh-0.6.0/src/notifications/notification.h Examining data/phosh-0.6.0/src/notifications/notify-manager.c Examining data/phosh-0.6.0/src/notifications/notify-manager.h Examining data/phosh-0.6.0/src/notifications/timestamp-label.c Examining data/phosh-0.6.0/src/notifications/timestamp-label.h Examining data/phosh-0.6.0/src/osk-manager.c Examining data/phosh-0.6.0/src/osk-manager.h Examining data/phosh-0.6.0/src/osk/osk-button.c Examining data/phosh-0.6.0/src/osk/osk-button.h Examining data/phosh-0.6.0/src/overview.c Examining data/phosh-0.6.0/src/overview.h Examining data/phosh-0.6.0/src/panel.c Examining data/phosh-0.6.0/src/panel.h Examining data/phosh-0.6.0/src/phosh-wayland.c Examining data/phosh-0.6.0/src/phosh-wayland.h Examining data/phosh-0.6.0/src/polkit-auth-agent.c Examining data/phosh-0.6.0/src/polkit-auth-agent.h Examining data/phosh-0.6.0/src/polkit-auth-prompt.c Examining data/phosh-0.6.0/src/polkit-auth-prompt.h Examining data/phosh-0.6.0/src/proximity.c Examining data/phosh-0.6.0/src/proximity.h Examining data/phosh-0.6.0/src/quick-setting.c Examining data/phosh-0.6.0/src/quick-setting.h Examining data/phosh-0.6.0/src/rotateinfo.c Examining data/phosh-0.6.0/src/rotateinfo.h Examining data/phosh-0.6.0/src/screen-saver-manager.c Examining data/phosh-0.6.0/src/screen-saver-manager.h Examining data/phosh-0.6.0/src/sensor-proxy-manager.c Examining data/phosh-0.6.0/src/sensor-proxy-manager.h Examining data/phosh-0.6.0/src/session-presence.c Examining data/phosh-0.6.0/src/session-presence.h Examining data/phosh-0.6.0/src/session.c Examining data/phosh-0.6.0/src/session.h Examining data/phosh-0.6.0/src/settings.c Examining data/phosh-0.6.0/src/settings.h Examining data/phosh-0.6.0/src/settings/brightness.c Examining data/phosh-0.6.0/src/settings/brightness.h Examining data/phosh-0.6.0/src/settings/gvc-channel-bar.c Examining data/phosh-0.6.0/src/settings/gvc-channel-bar.h Examining data/phosh-0.6.0/src/shell.c Examining data/phosh-0.6.0/src/shell.h Examining data/phosh-0.6.0/src/status-icon.c Examining data/phosh-0.6.0/src/status-icon.h Examining data/phosh-0.6.0/src/swipe-away-bin.c Examining data/phosh-0.6.0/src/swipe-away-bin.h Examining data/phosh-0.6.0/src/system-prompt.c Examining data/phosh-0.6.0/src/system-prompt.h Examining data/phosh-0.6.0/src/system-prompter.c Examining data/phosh-0.6.0/src/system-prompter.h Examining data/phosh-0.6.0/src/thumbnail.c Examining data/phosh-0.6.0/src/thumbnail.h Examining data/phosh-0.6.0/src/toplevel-manager.c Examining data/phosh-0.6.0/src/toplevel-manager.h Examining data/phosh-0.6.0/src/toplevel-thumbnail.c Examining data/phosh-0.6.0/src/toplevel-thumbnail.h Examining data/phosh-0.6.0/src/toplevel.c Examining data/phosh-0.6.0/src/toplevel.h Examining data/phosh-0.6.0/src/torch-info.c Examining data/phosh-0.6.0/src/torch-info.h Examining data/phosh-0.6.0/src/torch-manager.c Examining data/phosh-0.6.0/src/torch-manager.h Examining data/phosh-0.6.0/src/util.c Examining data/phosh-0.6.0/src/util.h Examining data/phosh-0.6.0/src/wifiinfo.c Examining data/phosh-0.6.0/src/wifiinfo.h Examining data/phosh-0.6.0/src/wifimanager.c Examining data/phosh-0.6.0/src/wifimanager.h Examining data/phosh-0.6.0/src/wwan/phosh-wwan-backend.h Examining data/phosh-0.6.0/src/wwan/phosh-wwan-iface.c Examining data/phosh-0.6.0/src/wwan/phosh-wwan-iface.h Examining data/phosh-0.6.0/src/wwan/phosh-wwan-mm.c Examining data/phosh-0.6.0/src/wwan/phosh-wwan-mm.h Examining data/phosh-0.6.0/src/wwan/phosh-wwan-ofono.c Examining data/phosh-0.6.0/src/wwan/phosh-wwan-ofono.h Examining data/phosh-0.6.0/src/wwaninfo.c Examining data/phosh-0.6.0/src/wwaninfo.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-channel-map-private.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-channel-map.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-channel-map.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-card-private.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-card.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-card.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-control-private.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-control.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-control.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-event-role.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-event-role.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-sink-input.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-sink-input.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-sink.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-sink.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-source-output.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-source-output.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-source.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-source.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-stream-private.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-stream.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-stream.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-ui-device.c Examining data/phosh-0.6.0/subprojects/gvc/gvc-mixer-ui-device.h Examining data/phosh-0.6.0/subprojects/gvc/gvc-pulseaudio-fake.h Examining data/phosh-0.6.0/subprojects/gvc/test-audio-device-selection.c Examining data/phosh-0.6.0/subprojects/gvc/tests-include/config.h Examining data/phosh-0.6.0/tests/stubs/bad-prop.h Examining data/phosh-0.6.0/tests/stubs/phosh.c Examining data/phosh-0.6.0/tests/stubs/thumbnail.c Examining data/phosh-0.6.0/tests/stubs/toplevel-manager.c Examining data/phosh-0.6.0/tests/stubs/toplevel.c Examining data/phosh-0.6.0/tests/test-activity.c Examining data/phosh-0.6.0/tests/test-app-grid-button.c Examining data/phosh-0.6.0/tests/test-app-list-model.c Examining data/phosh-0.6.0/tests/test-background.c Examining data/phosh-0.6.0/tests/test-connectivity-info.c Examining data/phosh-0.6.0/tests/test-favourite-model.c Examining data/phosh-0.6.0/tests/test-idle-manager.c Examining data/phosh-0.6.0/tests/test-layer-surface.c Examining data/phosh-0.6.0/tests/test-lockshield.c Examining data/phosh-0.6.0/tests/test-media-player.c Examining data/phosh-0.6.0/tests/test-notification-banner.c Examining data/phosh-0.6.0/tests/test-notification-content.c Examining data/phosh-0.6.0/tests/test-notification-frame.c Examining data/phosh-0.6.0/tests/test-notification-list.c Examining data/phosh-0.6.0/tests/test-notification-source.c Examining data/phosh-0.6.0/tests/test-notification.c Examining data/phosh-0.6.0/tests/test-overview.c Examining data/phosh-0.6.0/tests/test-quick-setting.c Examining data/phosh-0.6.0/tests/test-status-icon.c Examining data/phosh-0.6.0/tests/test-timestamp-label.c Examining data/phosh-0.6.0/tests/testlib.c Examining data/phosh-0.6.0/tests/testlib.h Examining data/phosh-0.6.0/tools/app-buttons.c Examining data/phosh-0.6.0/tools/app-grid-standalone.c Examining data/phosh-0.6.0/tools/app-scroll.c Examining data/phosh-0.6.0/tools/dump-app-list.c Examining data/phosh-0.6.0/tools/image-notify.c Examining data/phosh-0.6.0/tools/notify-blocks.c Examining data/phosh-0.6.0/tools/notify-server-standalone.c Examining data/phosh-0.6.0/tools/phosh-osk-stub.c FINAL RESULTS: data/phosh-0.6.0/src/monitor-manager.c:402: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(wl_red.data, red, size); data/phosh-0.6.0/src/monitor-manager.c:403: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(wl_green.data, green, size); data/phosh-0.6.0/src/monitor-manager.c:404: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(wl_blue.data, blue, size); data/phosh-0.6.0/src/polkit-auth-agent.c:148:11: [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[4096]; data/phosh-0.6.0/subprojects/gvc/gvc-mixer-control.c:1454:9: [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 map_buff[PA_CHANNEL_MAP_SNPRINT_MAX]; data/phosh-0.6.0/subprojects/gvc/test-audio-device-selection.c:27:2: [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 *args[G_N_ELEMENTS (audio_selection_choices) + 1]; data/phosh-0.6.0/tests/test-favourite-model.c:46:9: [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. const char *items_missing[2] = {"thing-that-wont-exist.desktop", NULL}; data/phosh-0.6.0/tests/test-favourite-model.c:47:9: [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. const char *items[2] = {"demo.app.First.desktop", NULL}; data/phosh-0.6.0/tests/test-favourite-model.c:74:9: [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. const char *items[2] = {"demo.app.First.desktop", NULL}; data/phosh-0.6.0/src/app-grid-button.c:177:16: [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). *(app_id + strlen (app_id) - strlen (".desktop")) = '\0'; data/phosh-0.6.0/src/app-grid-button.c:177: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). *(app_id + strlen (app_id) - strlen (".desktop")) = '\0'; data/phosh-0.6.0/src/app-grid.c:95:25: [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 (search == NULL || strlen (search) == 0) { data/phosh-0.6.0/src/contrib/shell-network-agent.c:628: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). if (secret && strlen (secret)) data/phosh-0.6.0/src/contrib/shell-network-agent.c:673: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 (secret && strlen (secret)) data/phosh-0.6.0/src/media-player.c:584: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 (bus_name) < G_N_ELEMENTS (MPRIS_PREFIX)) data/phosh-0.6.0/src/notifications/notification.c:597: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). strlen (app_name) > 0 && data/phosh-0.6.0/src/notifications/notify-manager.c:255:25: [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 (string == NULL || strlen (string) < 1) { data/phosh-0.6.0/src/polkit-auth-prompt.c:141:47: [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). (icon_name && strlen(icon_name)) ? icon_name : "dialog-password-symbolic", data/phosh-0.6.0/src/polkit-auth-prompt.c:381:20: [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 (!password || strlen (password) == 0) data/phosh-0.6.0/src/system-prompt.c:466:12: [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 (password); data/phosh-0.6.0/src/toplevel-thumbnail.c:65: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). randname (name + strlen (name) - 6); data/phosh-0.6.0/src/util.c:33:20: [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). first_char = strlen ("gnome-"); ANALYSIS SUMMARY: Hits = 22 Lines analyzed = 46888 in approximately 0.89 seconds (52704 lines/second) Physical Source Lines of Code (SLOC) = 33166 Hits@level = [0] 2 [1] 13 [2] 9 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 24 [1+] 22 [2+] 9 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 0.723633 [1+] 0.66333 [2+] 0.271362 [3+] 0 [4+] 0 [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.