Skip to content

Commit

Permalink
swaybar/tray: Prevent null pointer dereference
Browse files Browse the repository at this point in the history
This change prevents swaybar from crashing when trying to open the
context menu of a StatusNotifierItem. Observed with blueman-applet.

The backtrace is:

 Program terminated with signal SIGSEGV, Segmentation fault.
 #0  0x000055fa7472b150 in dbusmenu_menu_find_menu_surface (menu=0x0, surface=0x55fa74d290d0) at ../sway-1.7/swaybar/tray/dbusmenu.c:1203
 1203		if (menu->surface && menu->surface->surface == surface) {
 (gdb) bt
 #0  0x000055fa7472b150 in dbusmenu_menu_find_menu_surface (menu=0x0, surface=0x55fa74d290d0) at ../sway-1.7/swaybar/tray/dbusmenu.c:1203
 #1  0x000055fa7472b4a3 in dbusmenu_pointer_enter
     (data=0x55fa74d28310, wl_pointer=0x55fa74d22e10, serial=348969, surface=0x55fa74d290d0, surface_x=365306, surface_y=6803)
     at ../sway-1.7/swaybar/tray/dbusmenu.c:1278
 swaywm#2  0x000055fa747192eb in wl_pointer_enter
     (data=0x55fa74d28310, wl_pointer=0x55fa74d22e10, serial=348969, surface=0x55fa74d290d0, surface_x=365306, surface_y=6803)
     at ../sway-1.7/swaybar/input.c:121
 swaywm#3  0x00007f9eced29e1a in  () at /usr/lib64/libffi.so.8
 swaywm#4  0x00007f9eced2937c in  () at /usr/lib64/libffi.so.8
 swaywm#5  0x00007f9ecf6da4c1 in  () at /usr/lib64/libwayland-client.so.0
 swaywm#6  0x00007f9ecf6d6a0a in  () at /usr/lib64/libwayland-client.so.0
 swaywm#7  0x00007f9ecf6d832c in wl_display_dispatch_queue_pending () at /usr/lib64/libwayland-client.so.0
 swaywm#8  0x00007f9ecf6d884f in wl_display_roundtrip_queue () at /usr/lib64/libwayland-client.so.0
 swaywm#9  0x000055fa7472acc8 in swaybar_dbusmenu_create (sni=0x55fa74e05590, output=0x55fa74d28d60, seat=0x55fa74d28310, serial=348944, x=5230, y=1100)
     at ../sway-1.7/swaybar/tray/dbusmenu.c:1107
 swaywm#10 0x000055fa74724de8 in handle_click
     (sni=0x55fa74e05590, output=0x55fa74d28d60, seat=0x55fa74d28310, serial=348944, x=5230, y=1100, button=273, delta=1)
     at ../sway-1.7/swaybar/tray/item.c:379
 swaywm#11 0x000055fa74725137 in icon_hotspot_callback
     (output=0x55fa74d28d60, hotspot=0x55fa74db12f0, seat=0x55fa74d28310, serial=348944, x=1390.921875, y=20.99609375, button=273, data=0x55fa74f33e40) at ../sway-1.7/swaybar/tray/item.c:423
 swaywm#12 0x000055fa74719555 in process_hotspots (output=0x55fa74d28d60, seat=0x55fa74d28310, serial=348944, x=1390.921875, y=20.99609375, button=273)
     at ../sway-1.7/swaybar/input.c:175
 swaywm#13 0x000055fa74719693 in wl_pointer_button (data=0x55fa74d28310, wl_pointer=0x55fa74d22e10, serial=348944, time=1003868332, button=273, state=1)
     at ../sway-1.7/swaybar/input.c:207
 swaywm#14 0x00007f9eced29e1a in  () at /usr/lib64/libffi.so.8
 swaywm#15 0x00007f9eced2937c in  () at /usr/lib64/libffi.so.8
 swaywm#16 0x00007f9ecf6da4c1 in  () at /usr/lib64/libwayland-client.so.0
 swaywm#17 0x00007f9ecf6d6a0a in  () at /usr/lib64/libwayland-client.so.0
 swaywm#18 0x00007f9ecf6d832c in wl_display_dispatch_queue_pending () at /usr/lib64/libwayland-client.so.0
 swaywm#19 0x000055fa74716aa9 in display_in (fd=136, mask=1, data=0x55fa7473ba40 <swaybar>) at ../sway-1.7/swaybar/bar.c:470
 swaywm#20 0x000055fa7472d414 in loop_poll (loop=0x55fa74d20fd0) at ../sway-1.7/common/loop.c:84
 swaywm#21 0x000055fa74716d52 in bar_run (bar=0x55fa7473ba40 <swaybar>) at ../sway-1.7/swaybar/bar.c:519
 swaywm#22 0x000055fa7471cec2 in main (argc=3, argv=0x7fff4c24db38) at ../sway-1.7/swaybar/main.c:101
  • Loading branch information
michaelweiser committed Feb 28, 2022
1 parent a5bb965 commit 99919d4
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions swaybar/tray/dbusmenu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1199,6 +1199,9 @@ bool dbusmenu_pointer_motion(struct swaybar_seat *seat,

static struct swaybar_dbusmenu_menu *dbusmenu_menu_find_menu_surface(
struct swaybar_dbusmenu_menu *menu, struct wl_surface *surface) {
if (!menu) {
return NULL;
}

if (menu->surface && menu->surface->surface == surface) {
return menu;
Expand Down

0 comments on commit 99919d4

Please sign in to comment.