qemu-e2k/ui
Peter Lieven bea60dd767 ui/vnc: fix potential memory corruption issues
this patch makes the VNC server work correctly if the
server surface and the guest surface have different sizes.

Basically the server surface is adjusted to not exceed VNC_MAX_WIDTH
x VNC_MAX_HEIGHT and additionally the width is rounded up to multiple of
VNC_DIRTY_PIXELS_PER_BIT.

If we have a resolution whose width is not dividable by VNC_DIRTY_PIXELS_PER_BIT
we now get a small black bar on the right of the screen.

If the surface is too big to fit the limits only the upper left area is shown.

On top of that this fixes 2 memory corruption issues:

The first was actually discovered during playing
around with a Windows 7 vServer. During resolution
change in Windows 7 it happens sometimes that Windows
changes to an intermediate resolution where
server_stride % cmp_bytes != 0 (in vnc_refresh_server_surface).
This happens only if width % VNC_DIRTY_PIXELS_PER_BIT != 0.

The second is a theoretical issue, but is maybe exploitable
by the guest. If for some reason the guest surface size is bigger
than VNC_MAX_WIDTH x VNC_MAX_HEIGHT we end up in severe corruption since
this limit is nowhere enforced.

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2014-07-01 13:26:40 +02:00
..
Makefile.objs input: key mapping helpers 2014-05-16 08:30:11 +02:00
cocoa.m ui/cocoa: Honour -show-cursor command line option 2014-06-29 22:00:33 +01:00
console.c qemu-char: introduce qemu_chr_alloc 2014-06-23 11:12:28 -04:00
curses.c input/curses: add kbd delay between keydown and keyup events 2014-06-04 08:40:42 +02:00
curses_keys.h janitor: add guards to headers 2012-12-19 08:31:31 +01:00
cursor.c ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01: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
d3des.c ui: move all ui components in ui/ 2010-07-26 17:35:54 -05:00
d3des.h janitor: add guards to headers 2012-12-19 08:31:31 +01:00
gtk.c gtk: update window size after showing/hiding tabs 2014-06-11 14:26:49 +02:00
input-keymap.c input: keymap: add meta keys 2014-05-26 08:42:43 +02:00
input-legacy.c input: use kbd delays for send_key monitor command 2014-06-04 08:40:41 +02:00
input.c input: add support for kbd delays 2014-06-04 08:40:41 +02:00
keymaps.c qemu-char: add support for U-prefixed symbols 2013-11-13 15:48:38 +04:00
keymaps.h ui: move all ui components in ui/ 2010-07-26 17:35:54 -05:00
qemu-pixman.c pixman: render vgafont glyphs into pixman images 2013-04-16 09:03:47 +02:00
qemu-x509.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
sdl.c input: sdl: fix guest_cursor logic. 2014-03-10 13:49:44 +01:00
sdl2-keymap.h ui/sdl2 : initial port to SDL 2.0 (v2.0) 2014-03-05 09:52:05 +01:00
sdl2.c sdl2: textinput + terminal 2014-06-02 16:28:58 +02: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 sdl: Fix heap smash in sdl_zoom_rgb{16,32} for int > 32 bits 2013-01-15 18:25:30 -06:00
sdl_zoom.h ui: move all ui components in ui/ 2010-07-26 17:35:54 -05: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
spice-core.c qapi event: convert SPICE events 2014-06-23 11:12:28 -04:00
spice-display.c spice: fix 32bit build 2014-06-20 16:22:07 +01:00
spice-input.c spice: input: Fix absolute mouse y coordinates 2014-03-24 08:41:21 +01:00
vgafont.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
vnc-auth-sasl.c Merge branch 'trivial-patches' of git://github.com/stefanha/qemu 2012-10-06 18:54:14 +02:00
vnc-auth-sasl.h aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
vnc-auth-vencrypt.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
vnc-auth-vencrypt.h ui: move all ui components in ui/ 2010-07-26 17:35:54 -05: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 pixman/vnc: remove dead code. 2012-11-01 14:00:05 +01:00
vnc-enc-tight.c vnc-enc-tight: Fix divide-by-zero in tight_detect_smooth_image{16,24,32} 2014-06-02 16:30:52 +02:00
vnc-enc-tight.h vnc: tight add PNG encoding 2010-07-26 17:36:14 -05:00
vnc-enc-zlib.c Use glib memory allocation and free functions 2011-08-20 23:01:08 -05:00
vnc-enc-zrle-template.c vnc: Add ZRLE and ZYWRLE encodings. 2011-02-23 16:28:28 -06:00
vnc-enc-zrle.c pixman/vnc: use pixman images in vnc. 2012-11-01 14:00:04 +01:00
vnc-enc-zrle.h vnc: Add ZRLE and ZYWRLE encodings. 2011-02-23 16:28:28 -06:00
vnc-enc-zywrle-template.c Fix spelling in comments, documentation and messages 2011-12-14 11:09:44 +00:00
vnc-enc-zywrle.h misc: Spelling and grammar fixes in comments 2013-10-26 13:06:45 +04:00
vnc-jobs.c vnc dirty tracking optinizations. 2014-03-11 10:53:17 +00:00
vnc-jobs.h vnc: add missing static 2012-11-01 19:49:45 +01:00
vnc-palette.c ui/vnc-palette.c: Include headers it needs 2012-12-06 09:17:05 +01:00
vnc-palette.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
vnc-tls.c vnc: Drop superfluous conditionals around g_free() 2014-06-19 12:48:07 +02:00
vnc-tls.h misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
vnc-ws.c aio / timers: Untangle include files 2013-08-22 19:10:27 +02:00
vnc-ws.h TLS support for VNC Websockets 2013-05-03 12:04:57 -05:00
vnc.c ui/vnc: fix potential memory corruption issues 2014-07-01 13:26:40 +02:00
vnc.h ui/vnc: fix potential memory corruption issues 2014-07-01 13:26:40 +02:00
vnc_keysym.h qemu-char: add missing characters used in keymaps 2013-11-13 15:48:38 +04:00
x_keymap.c ui: move all ui components in ui/ 2010-07-26 17:35:54 -05:00
x_keymap.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00