diff mbox

vnc: Fix fatal crash with vnc reverse mode

Message ID 1297885680-17860-1-git-send-email-weil@mail.berlios.de
State Accepted
Headers show

Commit Message

Stefan Weil Feb. 16, 2011, 7:48 p.m. UTC
Reverse mode is unusable:

	qemu -vnc localhost:5500,reverse

crashes in vnc_refresh_server_surface because some pointers are NULL.

Fix this by calling vnc_dpy_resize (which initializes these pointers)
before calling vnc_refresh.

Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 ui/vnc.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Comments

Anthony Liguori Feb. 16, 2011, 8:16 p.m. UTC | #1
On 02/16/2011 01:48 PM, Stefan Weil wrote:
> Reverse mode is unusable:
>
> 	qemu -vnc localhost:5500,reverse
>
> crashes in vnc_refresh_server_surface because some pointers are NULL.
>
> Fix this by calling vnc_dpy_resize (which initializes these pointers)
> before calling vnc_refresh.
>
> Cc: Anthony Liguori<aliguori@us.ibm.com>
> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>    

Nice catch!

Regards,

Anthony Liguori

> ---
>   ui/vnc.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/ui/vnc.c b/ui/vnc.c
> index da83adf..096b5f3 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -2349,6 +2349,7 @@ static void vnc_init_timer(VncDisplay *vd)
>       vd->timer_interval = VNC_REFRESH_INTERVAL_BASE;
>       if (vd->timer == NULL&&  !QTAILQ_EMPTY(&vd->clients)) {
>           vd->timer = qemu_new_timer(rt_clock, vnc_refresh, vd);
> +        vnc_dpy_resize(vd->ds);
>           vnc_refresh(vd);
>       }
>   }
>
Stefan Weil Feb. 23, 2011, 9:57 p.m. UTC | #2
Am 16.02.2011 21:16, schrieb Anthony Liguori:
> On 02/16/2011 01:48 PM, Stefan Weil wrote:
>> Reverse mode is unusable:
>>
>>     qemu -vnc localhost:5500,reverse
>>
>> crashes in vnc_refresh_server_surface because some pointers are NULL.
>>
>> Fix this by calling vnc_dpy_resize (which initializes these pointers)
>> before calling vnc_refresh.
>>
>> Cc: Anthony Liguori<aliguori@us.ibm.com>
>> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>
> Nice catch!
>
> Regards,
>
> Anthony Liguori


What now? Will the patch be committed, is there a different fix for this 
bug,
or are you planning to remove vnc because it is unmaintained?

Stefan
Anthony Liguori Feb. 23, 2011, 11:23 p.m. UTC | #3
On 02/16/2011 01:48 PM, Stefan Weil wrote:
> Reverse mode is unusable:
>
> 	qemu -vnc localhost:5500,reverse
>
> crashes in vnc_refresh_server_surface because some pointers are NULL.
>
> Fix this by calling vnc_dpy_resize (which initializes these pointers)
> before calling vnc_refresh.
>
> Cc: Anthony Liguori<aliguori@us.ibm.com>
> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>    

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>   ui/vnc.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/ui/vnc.c b/ui/vnc.c
> index da83adf..096b5f3 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -2349,6 +2349,7 @@ static void vnc_init_timer(VncDisplay *vd)
>       vd->timer_interval = VNC_REFRESH_INTERVAL_BASE;
>       if (vd->timer == NULL&&  !QTAILQ_EMPTY(&vd->clients)) {
>           vd->timer = qemu_new_timer(rt_clock, vnc_refresh, vd);
> +        vnc_dpy_resize(vd->ds);
>           vnc_refresh(vd);
>       }
>   }
>
Anthony Liguori Feb. 23, 2011, 11:24 p.m. UTC | #4
On 02/23/2011 03:57 PM, Stefan Weil wrote:
> Am 16.02.2011 21:16, schrieb Anthony Liguori:
>> On 02/16/2011 01:48 PM, Stefan Weil wrote:
>>> Reverse mode is unusable:
>>>
>>>     qemu -vnc localhost:5500,reverse
>>>
>>> crashes in vnc_refresh_server_surface because some pointers are NULL.
>>>
>>> Fix this by calling vnc_dpy_resize (which initializes these pointers)
>>> before calling vnc_refresh.
>>>
>>> Cc: Anthony Liguori<aliguori@us.ibm.com>
>>> Signed-off-by: Stefan Weil<weil@mail.berlios.de>
>>
>> Nice catch!
>>
>> Regards,
>>
>> Anthony Liguori
>
>
> What now? Will the patch be committed, is there a different fix for 
> this bug,
> or are you planning to remove vnc because it is unmaintained?

Cute.

Regards,

Anthony Liguori

>
> Stefan
>
diff mbox

Patch

diff --git a/ui/vnc.c b/ui/vnc.c
index da83adf..096b5f3 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2349,6 +2349,7 @@  static void vnc_init_timer(VncDisplay *vd)
     vd->timer_interval = VNC_REFRESH_INTERVAL_BASE;
     if (vd->timer == NULL && !QTAILQ_EMPTY(&vd->clients)) {
         vd->timer = qemu_new_timer(rt_clock, vnc_refresh, vd);
+        vnc_dpy_resize(vd->ds);
         vnc_refresh(vd);
     }
 }