From: Mark McLoughlin <markmc@redhat.com>
To: Stefan Weil <weil@mail.berlios.de>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [STABLE] [BUG] VNC mode can crash QEMU
Date: Mon, 25 May 2009 09:33:24 +0100 [thread overview]
Message-ID: <1243240404.18067.6.camel@blaa> (raw)
In-Reply-To: <4A19A95A.2050801@mail.berlios.de>
On Sun, 2009-05-24 at 22:08 +0200, Stefan Weil wrote:
> Hello,
>
> this scenario crashs the latest QEMU HEAD on Windows
> (Linux users, please note that the bug is not Windows related,
> so don't stop reading!):
>
> * run qemu.exe -vnc :0
> * connect using UltraVnc
> * select fuzzy screen mode in UltraVnc
>
> => segfault of qemu.exe
>
> The crash is caused by VNC protocols which are unsupported
> by QEMU - in my case it was the fuzzy screen mode protocol.
> These protocols trigger a call stack which releases the
> VncState vs:
>
> qemu_free(vs)
> vnc_client_io_error(vs, ...)
> vnc_client_error(vs, ...)
> protocol_client_msg(vs, ...)
> vnc_client_read
> main_loop_wait
> main_loop
>
> The default handlers for unimplemented protocols in
> protocol_client_msg call vnc_client_error which finally
> calls qemu_free for the current VncState vs.
>
> vs is then used in protocol_client_msg and vnc_client_read
> although it is no longer valid. On Windows, this results
> in a crash, for other host platforms, the result depends
> on implementation details of the C library.
>
> In any case, access to a data structure after a free()
> is a bug.
Yep, I looked into a similar report recently:
https://bugzilla.redhat.com/show_bug.cgi?id=501131
Basically, vnc_flush() or vnc_update_client() will handle an error by
freeing VncState, yet we will not detect this error and happily continue
on using the freed VncState.
The approach I tried in the patch attached to the bug isn't going to
work, I think. Instead, we should just mark the VncState with a
"deleted" flag on I/O error and only free it later on when the
in-progress protocol step has completed.
Cheers,
Mark.
prev parent reply other threads:[~2009-05-25 8:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-24 20:08 [Qemu-devel] [STABLE] [BUG] VNC mode can crash QEMU Stefan Weil
2009-05-25 8:33 ` Mark McLoughlin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1243240404.18067.6.camel@blaa \
--to=markmc@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=weil@mail.berlios.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.