diff options
author | Roger Pau Monné <royger@FreeBSD.org> | 2017-02-10 14:09:29 +0000 |
---|---|---|
committer | Roger Pau Monné <royger@FreeBSD.org> | 2017-02-10 14:09:29 +0000 |
commit | 0b51aad74cead39d818efd13d94c19c6bfff2f1a (patch) | |
tree | 2dc2f0958f7f79441a2b7b910a8854e1852f3366 /sysutils/xen-tools/files | |
parent | 20ae938bc46185ecf7156b8174d40136a6202d22 (diff) |
Notes
Diffstat (limited to 'sysutils/xen-tools/files')
-rw-r--r-- | sysutils/xen-tools/files/xsa208-qemuu.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/sysutils/xen-tools/files/xsa208-qemuu.patch b/sysutils/xen-tools/files/xsa208-qemuu.patch new file mode 100644 index 000000000000..c97f67fe5590 --- /dev/null +++ b/sysutils/xen-tools/files/xsa208-qemuu.patch @@ -0,0 +1,45 @@ +From: Li Qiang <address@hidden> + +When doing bitblt copy in backward mode, we should minus the +blt width first just like the adding in the forward mode. This +can avoid the oob access of the front of vga's vram. + +Signed-off-by: Li Qiang <address@hidden> +Message-id: address@hidden + +{ kraxel: with backward blits (negative pitch) addr is the topmost + address, so check it as-is against vram size ] + +[ This is CVE-2017-2615 / XSA-208 - Ian Jackson ] + +Cc: address@hidden +Cc: P J P <address@hidden> +Cc: Laszlo Ersek <address@hidden> +Cc: Paolo Bonzini <address@hidden> +Cc: Wolfgang Bumiller <address@hidden> +Fixes: d3532a0db02296e687711b8cdc7791924efccea0 (CVE-2014-8106) +Signed-off-by: Gerd Hoffmann <address@hidden> +--- + hw/display/cirrus_vga.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c +index bdb092e..3bbe3d5 100644 +--- a/hw/display/cirrus_vga.c ++++ b/hw/display/cirrus_vga.c +@@ -277,10 +277,9 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s, + } + if (pitch < 0) { + int64_t min = addr +- + ((int64_t)s->cirrus_blt_height-1) * pitch; +- int32_t max = addr +- + s->cirrus_blt_width; +- if (min < 0 || max > s->vga.vram_size) { ++ + ((int64_t)s->cirrus_blt_height - 1) * pitch ++ - s->cirrus_blt_width; ++ if (min < -1 || addr >= s->vga.vram_size) { + return true; + } + } else { +-- +1.8.3.1 |