From 2508a1d019919a610ed6b385459b68c285af8d8e Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 10 Jan 2026 13:02:57 +0000 Subject: [PATCH] fix(swaybar/dbusmenu): fix null pointer dereference when loading icons This change adds a null check when loading icons in the dbusmenu code to avoid a segmentation fault when the icon surface fails to load. --- swaybar/tray/dbusmenu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/swaybar/tray/dbusmenu.c b/swaybar/tray/dbusmenu.c index 6c8fd672f..65ec8d7d8 100644 --- a/swaybar/tray/dbusmenu.c +++ b/swaybar/tray/dbusmenu.c @@ -421,15 +421,17 @@ static void draw_menu_items(cairo_t *cairo, struct swaybar_dbusmenu_menu *menu, if (icon_path) { cairo_surface_t *icon = load_image(icon_path); free(icon_path); - cairo_surface_t *icon_scaled = - cairo_image_surface_scale(icon, size, size); - cairo_surface_destroy(icon); + if (icon) { + cairo_surface_t *icon_scaled = + cairo_image_surface_scale(icon, size, size); + cairo_surface_destroy(icon); - cairo_set_source_surface(cairo, icon_scaled, x, y); - cairo_rectangle(cairo, x, y, size, size); - cairo_fill(cairo); - cairo_surface_destroy(icon_scaled); - is_icon_drawn = true; + cairo_set_source_surface(cairo, icon_scaled, x, y); + cairo_rectangle(cairo, x, y, size, size); + cairo_fill(cairo); + cairo_surface_destroy(icon_scaled); + is_icon_drawn = true; + } } } else if (item->icon_data) { cairo_surface_t *icon = cairo_image_surface_scale(item->icon_data, size, size);