summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu-0.12.4/cursor-shadow-fix.patch
blob: 6600c4303f3f3a5fc4adfddb98c2f59e3b736c40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Fix the mouse shadow in qemu

the root cause is that the qemu cursor array is hardcoded to 256 bytes, while the sato use cursor of the size 64*64=4096, thus lead buffer overflow and abnormal mouse.

This issue has been fixed in upstream starting from v0.13.0-rc0. v0.12.5 still has this issue. So when qemu is upgraded to 0.13.0 or above, this patch can be safely removed.

Signed-off-by: Yu Ke <ke.yu@intel.com>

diff --git a/sdl.c b/sdl.c
index 7912c91..2f33cd2 100644
--- a/sdl.c
+++ b/sdl.c
@@ -775,12 +775,12 @@ static void sdl_mouse_define(int width, int height, int bpp,
                              int hot_x, int hot_y,
                              uint8_t *image, uint8_t *mask)
 {
-    uint8_t sprite[256], *line;
+    uint8_t *sprite, *line;
     int x, y, dst, bypl, src = 0;
     if (guest_sprite)
         SDL_FreeCursor(guest_sprite);
 
-    memset(sprite, 0, 256);
+    sprite = (uint8_t*)qemu_mallocz(width * height);
     bypl = ((width * bpp + 31) >> 5) << 2;
     for (y = 0, dst = 0; y < height; y ++, image += bypl) {
         line = image;
@@ -818,6 +818,7 @@ static void sdl_mouse_define(int width, int height, int bpp,
     if (guest_cursor &&
             (gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
         SDL_SetCursor(guest_sprite);
+	qemu_free(sprite);
 }
 
 static void sdl_cleanup(void)
OpenPOWER on IntegriCloud