qemu-irix/include
Gerd Hoffmann 63fdb09491 cirrus/vnc: zap bitblit support from console code.
There is a special code path (dpy_gfx_copy) to allow graphic emulation
notify user interface code about bitblit operations carryed out by
guests.  It is supported by cirrus and vnc server.  The intended purpose
is to optimize display scrolls and just send over the scroll op instead
of a full display update.

This is rarely used these days though because modern guests simply don't
use the cirrus blitter any more.  Any linux guest using the cirrus drm
driver doesn't.  Any windows guest newer than winxp doesn't ship with a
cirrus driver any more and thus uses the cirrus as simple framebuffer.

So this code tends to bitrot and bugs can go unnoticed for a long time.
See for example commit "3e10c3e vnc: fix qemu crash because of SIGSEGV"
which fixes a bug lingering in the code for almost a year, added by
commit "c7628bf vnc: only alloc server surface with clients connected".

Also the vnc server will throttle the frame rate in case it figures the
network can't keep up (send buffers are full).  This doesn't work with
dpy_gfx_copy, for any copy operation sent to the vnc client we have to
send all outstanding updates beforehand, otherwise the vnc client might
run the client side blit on outdated data and thereby corrupt the
display.  So this dpy_gfx_copy "optimization" might even make things
worse on slow network links.

Lets kill it once for all.

Oh, and one more reason: Turns out (after writing the patch) we have a
security bug in that code path ...

Fixes: CVE-2016-9603
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1489494419-14340-1-git-send-email-kraxel@redhat.com
(cherry picked from commit 50628d3479)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-03-21 15:03:15 -05:00
..
block blockjob: refactor backup_start as backup_job_create 2016-11-14 22:47:34 -05:00
crypto crypto: add CTR mode support 2016-10-19 10:09:24 +01:00
disas disas: Fix ATTRIBUTE_UNUSED define clash with ALSA headers 2016-07-19 16:40:39 +01:00
exec cpu-exec: fix icount out-of-bounds access 2017-03-16 12:10:40 -05:00
fpu fpu: add mechanism to check for invalid long double formats 2016-09-15 12:43:18 +01:00
hw virtio-pci: Fix cross-version migration with older machines 2016-12-15 07:35:19 +00:00
io io: add ability to set a name for IO channels 2016-10-27 09:13:10 +02:00
libdecnumber Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
migration migration: Add VMSTATE_UINTTL_TEST() 2016-11-23 12:00:48 +11:00
monitor qdev: add function qdev_set_id() 2016-11-22 10:29:37 -08:00
net eth: Extend vlan stripping functions 2017-03-16 12:10:41 -05:00
qapi qdict: implement a qdict_crumple method for un-flattening a dict 2016-10-25 17:56:14 +02:00
qemu bitops: fix rol/ror when shift is zero 2016-11-15 10:05:50 +11:00
qom *_run_on_cpu: introduce run_on_cpu_data type 2016-10-31 15:00:25 +01:00
standard-headers virtio-crypto: add virtio crypto device emulation 2016-11-01 19:21:08 +02:00
sysemu virtio, pc: fixes and features 2016-11-03 14:41:53 +00:00
ui cirrus/vnc: zap bitblit support from console code. 2017-03-21 15:03:15 -05:00
elf.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
glib-compat.h tests: send error_report to test log 2016-11-01 16:06:57 +01:00
qemu-common.h tcg: Add EXCP_ATOMIC 2016-10-26 08:29:00 -07:00
qemu-io.h
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00
trace.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00