Skip to content

display:Fix null pointer dereference

Vitor Ramos requested to merge ramos.vitor89/gnome-control-center:master into master

Component: Display @bberg

This solves #1192 (closed) segfault caused by a null pointer usage. The problem is that cc_display_config_manager_get_current return a null display object that later in cc_display_config_get_panel_orientation_managed is used without proper check causing a segfault.

This patch simply adds a null pointer check after cc_display_config_manager_get_current.

The full backtrace of the bug:

#0  0x00005555555f317c in CC_DISPLAY_CONFIG_GET_CLASS (ptr=0x0) at ../panels/display/cc-display-config.h:139
#1  0x00005555555f4b08 in cc_display_config_get_panel_orientation_managed (self=0x0) at ../panels/display/cc-display-config.c:639
#2  0x00005555555ef2dc in reset_current_config (panel=0x55555659e1f0) at ../panels/display/cc-display-panel.c:934
#3  0x00005555555ef45f in on_screen_changed (panel=0x55555659e1f0) at ../panels/display/cc-display-panel.c:970
#4  0x00007ffff7d7d8fa in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5  0x00007ffff7d904b3 in  () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6  0x00007ffff7d96c41 in g_signal_emit_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7  0x00007ffff7d96da3 in g_signal_emit () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8  0x00005555555f54e0 in _cc_display_config_manager_emit_changed (self=0x55555692ab00) at ../panels/display/cc-display-config-manager.c:54
#9  0x00005555555f4e6b in got_current_state (object=0x555555ac42c0, result=0x7fffd8003d70, data=0x55555692ab00) at ../panels/display/cc-display-config-manager-dbus.c:70
#10 0x00007ffff7e7b619 in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#11 0x00007ffff7e7c1bb in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#12 0x00007ffff7ed8644 in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#13 0x00007ffff7e7b619 in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#14 0x00007ffff7e7b65d in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#15 0x00007ffff7c8a3df in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007ffff7c8a788 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff7c8a853 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffff7eaa54d in g_application_run () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#19 0x00005555555bf1c4 in main (argc=0x1, argv=0x7fffffffdda8) at ../shell/main.c:65

Merge request reports