qemu-e2k/ui
Gerd Hoffmann 50628d3479 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
2017-03-16 08:58:15 +01:00
..
shader console-gl: add opengl rendering helper functions 2015-05-05 10:48:22 +02:00
Makefile.objs input: linux evdev support 2016-03-08 12:20:11 +01:00
cocoa.m ui/cocoa.m: add toast file support 2017-03-14 15:09:56 +00:00
console-gl.c ui/console-gl: Add support for big endian display surfaces 2016-06-10 11:13:59 +02:00
console.c cirrus/vnc: zap bitblit support from console code. 2017-03-16 08:58:15 +01:00
curses.c curses: Fix compiler warnings (Mingw-w64 redefinition of macro KEY_EVENT) 2017-01-10 08:14:20 +01:00
curses_keys.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
cursor.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
cursor_hidden.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
cursor_left_ptr.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
egl-context.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
egl-helpers.c egl-helpers: Support newer MESA versions 2017-02-20 12:46:09 +01:00
gtk-egl.c gtk-egl: add scanout_disable support 2017-02-27 16:15:29 +01:00
gtk-gl-area.c console: rename dpy_gl_scanout to dpy_gl_scanout_texture 2017-02-27 16:15:28 +01:00
gtk.c ui: Use XkbGetMap and XkbGetNames instead of XkbGetKeyboard 2017-02-27 16:19:47 +01:00
input-keymap.c ps2: Fix lost scancodes by recent changes 2017-01-10 08:14:20 +01:00
input-legacy.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
input-linux.c ui: add support for mice with extra/side buttons 2017-01-31 08:14:51 +01:00
input.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
keymaps.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
keymaps.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
qemu-pixman.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
qemu-x509.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
sdl.c ui: Use XkbGetMap and XkbGetNames instead of XkbGetKeyboard 2017-02-27 16:19:47 +01:00
sdl2-2d.c SDL2: add bgrx pixel format 2016-06-03 08:23:26 +02:00
sdl2-gl.c sdl2: add scanout_disable support 2017-02-27 16:15:29 +01:00
sdl2-input.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
sdl2-keymap.h sdl2: keymap fixups 2014-09-16 08:07:05 +02:00
sdl2.c sdl2: add scanout_disable support 2017-02-27 16:15:29 +01:00
sdl_keysym.h ui/sdl2 : initial port to SDL 2.0 (v2.0) 2014-03-05 09:52:05 +01:00
sdl_zoom.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
sdl_zoom.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
sdl_zoom_template.h sdl: Fix heap smash in sdl_zoom_rgb{16,32} for int > 32 bits 2013-01-15 18:25:30 -06:00
shader.c Changed malloc to g_malloc, free to g_free in ui/shader.c 2016-05-12 16:41:46 +02:00
spice-core.c spice: add display & head options 2017-02-27 16:21:23 +01:00
spice-display.c spice: add display & head options 2017-02-27 16:21:23 +01:00
spice-input.c qapi: rename input buttons 2016-03-01 08:19:07 +01:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
vgafont.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
vnc-auth-sasl.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
vnc-auth-sasl.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-auth-vencrypt.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
vnc-auth-vencrypt.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-enc-hextile-template.h pixman/vnc: use pixman images in vnc. 2012-11-01 14:00:04 +01:00
vnc-enc-hextile.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-tight.c ui/vnc-enc-tight: remove switch and have single return 2016-09-28 12:55:09 +02:00
vnc-enc-tight.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zlib.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle-template.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zywrle-template.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zywrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-jobs.c ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +01:00
vnc-jobs.h ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +01:00
vnc-palette.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
vnc-palette.h all: Clean up includes 2016-02-23 12:43:05 +00:00
vnc-ws.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
vnc-ws.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc.c cirrus/vnc: zap bitblit support from console code. 2017-03-16 08:58:15 +01:00
vnc.h ui: refactor VncDisplay to allow multiple listening sockets 2017-02-08 14:59:37 +01:00
vnc_keysym.h qemu-char: add cyrillic characters 'numerosign' to VNC keysyms 2015-03-10 08:15:34 +03:00
x_keymap.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
x_keymap.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00