]>
Commit | Line | Data |
---|---|---|
63bed3fb WB |
1 | From 4c65fed8bdf96780735dbdb92a8bd0d6b6526cc3 Mon Sep 17 00:00:00 2001 |
2 | From: Prasad J Pandit <pjp@fedoraproject.org> | |
3 | Date: Thu, 3 Dec 2015 18:54:17 +0530 | |
4 | Subject: [PATCH] ui: vnc: avoid floating point exception | |
5 | ||
6 | While sending 'SetPixelFormat' messages to a VNC server, | |
7 | the client could set the 'red-max', 'green-max' and 'blue-max' | |
8 | values to be zero. This leads to a floating point exception in | |
9 | write_png_palette while doing frame buffer updates. | |
10 | ||
11 | Reported-by: Lian Yihan <lianyihan@360.cn> | |
12 | Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> | |
13 | Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> | |
14 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | |
15 | --- | |
16 | ui/vnc.c | 6 +++--- | |
17 | 1 file changed, 3 insertions(+), 3 deletions(-) | |
18 | ||
19 | diff --git a/ui/vnc.c b/ui/vnc.c | |
20 | index 7538405..cbe4d33 100644 | |
21 | --- a/ui/vnc.c | |
22 | +++ b/ui/vnc.c | |
23 | @@ -2198,15 +2198,15 @@ static void set_pixel_format(VncState *vs, | |
24 | return; | |
25 | } | |
26 | ||
27 | - vs->client_pf.rmax = red_max; | |
28 | + vs->client_pf.rmax = red_max ? red_max : 0xFF; | |
29 | vs->client_pf.rbits = hweight_long(red_max); | |
30 | vs->client_pf.rshift = red_shift; | |
31 | vs->client_pf.rmask = red_max << red_shift; | |
32 | - vs->client_pf.gmax = green_max; | |
33 | + vs->client_pf.gmax = green_max ? green_max : 0xFF; | |
34 | vs->client_pf.gbits = hweight_long(green_max); | |
35 | vs->client_pf.gshift = green_shift; | |
36 | vs->client_pf.gmask = green_max << green_shift; | |
37 | - vs->client_pf.bmax = blue_max; | |
38 | + vs->client_pf.bmax = blue_max ? blue_max : 0xFF; | |
39 | vs->client_pf.bbits = hweight_long(blue_max); | |
40 | vs->client_pf.bshift = blue_shift; | |
41 | vs->client_pf.bmask = blue_max << blue_shift; | |
42 | -- | |
43 | 2.1.4 | |
44 |