]> xenbits.xensource.com Git - qemu-upstream-4.6-testing.git/commit
vnc: fix memory corruption (CVE-2015-5225)
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 21 Aug 2015 18:59:27 +0000 (20:59 +0200)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Fri, 21 Aug 2015 22:10:58 +0000 (22:10 +0000)
commit604ad155f685162b18ddb2446ca03ec9fe7901ce
tree84b92074a7ca90077b9830295582d221d7a3c1c4
parentbcf35eec0b621c46dbf0aeb40c6bc06b5d3981aa
vnc: fix memory corruption (CVE-2015-5225)

The _cmp_bytes variable added by commit "bea60dd ui/vnc: fix potential
memory corruption issues" can become negative.  Result is (possibly
exploitable) memory corruption.  Reason for that is it uses the stride
instead of bytes per scanline to apply limits.

For the server surface is is actually fine.  vnc creates that itself,
there is never any padding and thus scanline length always equals stride.

For the guest surface scanline length and stride are typically identical
too, but it doesn't has to be that way.  So add and use a new variable
(guest_ll) for the guest scanline length.  Also rename min_stride to
line_bytes to make more clear what it actually is.  Finally sprinkle
in an assert() to make sure we never use a negative _cmp_bytes again.

Reported-by: 范祚至(库特) <zuozhi.fzz@alibaba-inc.com>
Reviewed-by: P J P <ppandit@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
ui/vnc.c