提交 62d4c6bd 编写于 作者: L Li Qiang 提交者: Gerd Hoffmann

cirrus: fix oob access issue (CVE-2017-2615)

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: NLi Qiang <liqiang6-s@360.cn>

{ kraxel: with backward blits (negative pitch) addr is the topmost
          address, so check it as-is against vram size ]

Cc: qemu-stable@nongnu.org
Cc: P J P <ppandit@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Wolfgang Bumiller <w.bumiller@proxmox.com>
Fixes: d3532a0d (CVE-2014-8106)
Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
Message-id: 1485938101-26602-1-git-send-email-kraxel@redhat.com
Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
上级 60cd23e8
...@@ -274,10 +274,9 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s, ...@@ -274,10 +274,9 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s,
{ {
if (pitch < 0) { if (pitch < 0) {
int64_t min = addr int64_t min = addr
+ ((int64_t)s->cirrus_blt_height-1) * pitch; + ((int64_t)s->cirrus_blt_height - 1) * pitch
int32_t max = addr - s->cirrus_blt_width;
+ s->cirrus_blt_width; if (min < -1 || addr >= s->vga.vram_size) {
if (min < 0 || max > s->vga.vram_size) {
return true; return true;
} }
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册