OSDN Git Service

vnc: deal with surface NULL pointers
authorGerd Hoffmann <kraxel@redhat.com>
Thu, 8 Mar 2018 16:18:03 +0000 (17:18 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 12 Mar 2018 08:00:59 +0000 (09:00 +0100)
commit2e5567c903ad05d312de0c3188cb2d3b856fa4c4
tree1b6a308596eb1d796a58fcae729f3ac8f58c45b0
parentf1bd313264925dfb229a2152eb3f60fe55746b83
vnc: deal with surface NULL pointers

Secondary displays in multihead setups are allowed to have a NULL
DisplaySurface.  Typically user interfaces handle this by hiding the
window which shows the display in question.

This isn't an option for vnc though because it simply hasn't a concept
of windows or outputs.  So handle the situation by showing a placeholder
DisplaySurface instead.  Also check in console_select whenever a surface
is preset in the first place before requesting an update.

This fixes a segfault which can be triggered by switching to an unused
display (via vtrl-alt-<nr>) in a multihead setup, for example using
-device virtio-vga,max_outputs=2.

Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Message-id: 20180308161803.6152-1-kraxel@redhat.com
include/ui/console.h
ui/console.c
ui/vnc.c