Skip to content
Snippets Groups Projects
  1. Mar 16, 2017
    • Gerd Hoffmann's avatar
      cirrus/vnc: zap bitblit support from console code. · 50628d34
      Gerd Hoffmann authored
      
      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 "3e10c3ec vnc: fix qemu crash because of SIGSEGV"
      which fixes a bug lingering in the code for almost a year, added by
      commit "c7628bff 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: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1489494419-14340-1-git-send-email-kraxel@redhat.com
      50628d34
    • hangaohuai's avatar
      fix :cirrus_vga fix OOB read case qemu Segmentation fault · 215902d7
      hangaohuai authored
      
      check the validity of parameters in cirrus_bitblt_rop_fwd_transp_xxx
      and cirrus_bitblt_rop_fwd_xxx to avoid the OOB read which causes qemu Segmentation fault.
      
      After the fix, we will touch the assert in
      cirrus_invalidate_region:
      assert(off_cur_end >= off_cur);
      
      Signed-off-by: default avatarfangying <fangying1@huawei.com>
      Signed-off-by: default avatarhangaohuai <hangaohuai@huawei.com>
      Message-id: 20170314063919.16200-1-hangaohuai@huawei.com
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      215902d7
  2. Mar 15, 2017
  3. Mar 14, 2017
Loading