From: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
To: "Denis V. Lunev" <den@openvz.org>, svt-core@virtuozzo.com
Subject: Re: [PATCH hci-8.0 0/6] io/channel-websock: fix an unauthenticated crash in the handshake #VSTOR-143316
Date: Tue, 1 Sep 2026 18:51:10 +0300 [thread overview]
Message-ID: <18b04493-f414-4543-8686-c1e2baea0702@virtuozzo.com> (raw)
In-Reply-To: <20260831140620.1204363-1-den@openvz.org>
Ack
Applied to hci-8.0
On 8/31/26 5:06 PM, Denis V. Lunev wrote:
> Backport of the upstream series fixing an unauthenticated crash in the
> VNC websocket handshake. A client which can reach a websocket port
> crashes QEMU before it has authenticated, by sending an HTTP greeting
> whose request line holds no space:
>
> printf 'stats\r\nx\r\n\r\n' | nc $host $port
>
> Three defects line up to produce it. The greeting is rejected without
> queueing a response, so the handshake goes on to flush an empty buffer.
> A zero length sendmsg() succeeds and returns 0, which
> qio_channel_socket_writev() mistakes for failure and reports as
> QIO_CHANNEL_ERR_BLOCK with errp left unset. The handshake treats every
> negative return as fatal and hands that NULL Error to
> error_get_pretty(). Patches 1 to 3 close the three links.
>
> Patch 5 is the same NULL Error on the read side of the handshake, where
> ERR_BLOCK is folded into -1. It is reachable for a wss:// client, whose
> master channel is then a TLS channel: a wakeup carrying only part of a
> record makes gnutls report EAGAIN.
>
> The series applies to the branch unchanged, and the new unit test passes
> on it.
>
> Upstream posting, reviewed by the graphics maintainer:
> https://lore.kernel.org/qemu-devel/20260831100151.914178-1-den@openvz.org/
>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
>
> Denis V. Lunev (6):
> io/channel-socket: do not treat a zero length write as an error
> #VSTOR-143316
> io/channel-websock: send an HTTP 400 when the greeting has no space
> #VSTOR-143316
> io/channel-websock: handle a blocked write during the handshake
> #VSTOR-143316
> tests/unit: add websock handshake test #VSTOR-143316
> io/channel-websock: do not lose QIO_CHANNEL_ERR_BLOCK while reading
> #VSTOR-143316
> tests/unit: cover blocked IO during the websock handshake
> #VSTOR-143316
>
> io/channel-socket.c | 2 +-
> io/channel-websock.c | 10 +-
> tests/unit/meson.build | 1 +
> tests/unit/test-io-channel-websock.c | 249 +++++++++++++++++++++++++++
> 4 files changed, 260 insertions(+), 2 deletions(-)
> create mode 100644 tests/unit/test-io-channel-websock.c
>
prev parent reply other threads:[~2026-09-01 15:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 14:06 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 1/6] io/channel-socket: do not treat a zero length write as an error #VSTOR-143316 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 2/6] io/channel-websock: send an HTTP 400 when the greeting has no space #VSTOR-143316 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 3/6] io/channel-websock: handle a blocked write during the handshake #VSTOR-143316 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 4/6] tests/unit: add websock handshake test #VSTOR-143316 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 5/6] io/channel-websock: do not lose QIO_CHANNEL_ERR_BLOCK while reading #VSTOR-143316 Denis V. Lunev
2026-08-31 14:06 ` [PATCH hci-8.0 6/6] tests/unit: cover blocked IO during the websock handshake #VSTOR-143316 Denis V. Lunev
2026-09-01 15:51 ` Andrey Drobyshev [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=18b04493-f414-4543-8686-c1e2baea0702@virtuozzo.com \
--to=andrey.drobyshev@virtuozzo.com \
--cc=den@openvz.org \
--cc=svt-core@virtuozzo.com \
/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.