"7a72a4652a7955db579d2b9244a09edbf7b0529b": "io/channel-websock: do not lose QIO_CHANNEL_ERR_BLOCK while reading\n\nqio_channel_websock_handshake_read() folds every negative return from\nqio_channel_read() into -1. QIO_CHANNEL_ERR_BLOCK leaves errp unset, so\nqio_channel_websock_handshake_io() then hands a NULL Error to\nerror_get_pretty() and QEMU dies.\n\nThe master channel is non-blocking and, for a wss:// client, is a TLS\nchannel. A G_IO_IN wakeup carrying only part of a TLS record makes\ngnutls report EAGAIN, which is all it takes to reach this before the\nclient has authenticated.\n\nERR_BLOCK here means the headers are not complete yet, which is what a\n0 return already tells the caller. Report it that way and keep waiting.\nThe watch is level triggered, so an incomplete record sitting in the\nsocket spins the main loop until the rest of it arrives. That is\nbounded by the round trip and is what every reader layered over TLS\nalready does.\n\nFixes: 2d1d0e70cf3e (\"io: add QIOChannelWebsock class\")\nFixes: CVE-2026-84788\nCc: qemu-stable@nongnu.org\nCc: Daniel P. Berrang\u00e9 <berrange@redhat.com>\nCc: Marc-Andr\u00e9 Lureau <marcandre.lureau@redhat.com>\nReviewed-by: Daniel P. Berrang\u00e9 <berrange@redhat.com>\nReviewed-by: Marc-Andr\u00e9 Lureau <marcandre.lureau@redhat.com>\nSigned-off-by: Denis V. Lunev <den@openvz.org>\nSigned-off-by: Daniel P. Berrang\u00e9 <berrange@redhat.com>",
0 commit comments