From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538020; cv=none; d=zohomail.com; s=zohoarc; b=T/ZK2zNH6gmZ9Ff9VGgAt66dlIzpCv8QKGbRPMT5wdMyB9XAT2XRAKg1ZO7z4hmuv1YZA/Be6jWUVpxQ7KDabVe6l2CrL5e12pqhjQgkqX//OtGiqp+OYGrxFRpioFlayhipJZOm27ttboP2UaU3eKkho6fDZNLnD53MTG80BCE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538020; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2J4h1MLwsa6v9AdSB/cjdqrcF7St+KHBYqO/t9Qy89c=; b=PClLpxa+8IuMMVZWpGE4+2Hb1673QuLEk6FduQtNFuzvCqxExtUe9QEUAouBDR6ry28GrH27X+ePf3i23sanSGGIkcccVDstMsZ3CJ+kN0uIW8e15lQUKkbFui9VfWuPQEytnqpytaOEPbwuRqQs2kEmxGW8htPlDJGpjHfxQnU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538020478612.3829417195093; Fri, 4 Sep 2026 09:07:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRO-0003su-Gc; Fri, 04 Sep 2026 12:06:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRM-0003rq-Og for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:06:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRK-0006dL-Ke for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:06:56 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-662-0v0idWCMP26rJ-7psTzD1g-1; Fri, 04 Sep 2026 12:06:51 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D2CF1195411B; Fri, 4 Sep 2026 16:06:49 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CF0803001D37; Fri, 4 Sep 2026 16:06:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538013; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2J4h1MLwsa6v9AdSB/cjdqrcF7St+KHBYqO/t9Qy89c=; b=aTzgkc85gyoPbn/T5NI65wcVfq6DjDozTcFZaZLjwbJtcgQJfImH8D0VJY5UikK2zyrYtL AC1A5yO6mK253vdHniBBwXFWzxbcJ0HCvWfutz+wvuvmnh6Q/DI8PCRpEIpNUa3G0+Aqj3 5QE/2oHchu7RSA94ve6hv6iQYga1Qq4= X-MC-Unique: 0v0idWCMP26rJ-7psTzD1g-1 X-Mimecast-MFC-AGG-ID: 0v0idWCMP26rJ-7psTzD1g_1788538010 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , Evgeny Kolmakov Subject: [PULL v2 01/13] crypto: Use g_autofree Date: Fri, 4 Sep 2026 17:06:31 +0100 Message-ID: <20260904160643.353833-2-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538023947154100 From: Evgeny Kolmakov Use g_autofree attribute to reduce the amount of manual g_free() calls and 'goto out' code Signed-off-by: Evgeny Kolmakov Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 --- crypto/block.c | 17 ++++++----------- crypto/hmac-gcrypt.c | 12 ++++-------- crypto/hmac-glib.c | 10 +++------- crypto/ivgen-essiv.c | 15 ++++----------- crypto/ivgen.c | 6 ++---- crypto/secret_keyring.c | 5 ++--- 6 files changed, 21 insertions(+), 44 deletions(-) diff --git a/crypto/block.c b/crypto/block.c index 96c83e60b9..42558f3caf 100644 --- a/crypto/block.c +++ b/crypto/block.c @@ -55,7 +55,7 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOptions = *options, unsigned int flags, Error **errp) { - QCryptoBlock *block =3D g_new0(QCryptoBlock, 1); + g_autofree QCryptoBlock *block =3D g_new0(QCryptoBlock, 1); =20 qemu_mutex_init(&block->mutex); =20 @@ -65,7 +65,6 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOptions = *options, !qcrypto_block_drivers[options->format]) { error_setg(errp, "Unsupported block driver %s", QCryptoBlockFormat_str(options->format)); - g_free(block); return NULL; } =20 @@ -74,11 +73,10 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOption= s *options, if (block->driver->open(block, options, optprefix, readfunc, opaque, flags, errp) < 0) { - g_free(block); return NULL; } =20 - return block; + return g_steal_pointer(&block); } =20 =20 @@ -90,7 +88,7 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreateOpti= ons *options, unsigned int flags, Error **errp) { - QCryptoBlock *block =3D g_new0(QCryptoBlock, 1); + g_autofree QCryptoBlock *block =3D g_new0(QCryptoBlock, 1); =20 qemu_mutex_init(&block->mutex); =20 @@ -100,7 +98,6 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreateOpt= ions *options, !qcrypto_block_drivers[options->format]) { error_setg(errp, "Unsupported block driver %s", QCryptoBlockFormat_str(options->format)); - g_free(block); return NULL; } =20 @@ -109,11 +106,10 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreate= Options *options, =20 if (block->driver->create(block, options, optprefix, initfunc, writefunc, opaque, errp) < 0) { - g_free(block); return NULL; } =20 - return block; + return g_steal_pointer(&block); } =20 =20 @@ -185,17 +181,16 @@ int qcrypto_block_amend_options(QCryptoBlock *block, QCryptoBlockInfo *qcrypto_block_get_info(QCryptoBlock *block, Error **errp) { - QCryptoBlockInfo *info =3D g_new0(QCryptoBlockInfo, 1); + g_autofree QCryptoBlockInfo *info =3D g_new0(QCryptoBlockInfo, 1); =20 info->format =3D block->format; =20 if (block->driver->get_info && block->driver->get_info(block, info, errp) < 0) { - g_free(info); return NULL; } =20 - return info; + return g_steal_pointer(&info); } =20 =20 diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c index e428d17479..44631fb348 100644 --- a/crypto/hmac-gcrypt.c +++ b/crypto/hmac-gcrypt.c @@ -50,7 +50,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg, const uint8_t *key, size_t nkey, Error **errp) { - QCryptoHmacGcrypt *ctx; + g_autofree QCryptoHmacGcrypt *ctx =3D NULL; gcry_error_t err; =20 if (!qcrypto_hmac_supports(alg)) { @@ -66,7 +66,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg, if (err !=3D 0) { error_setg(errp, "Cannot initialize hmac: %s", gcry_strerror(err)); - goto error; + return NULL; } =20 err =3D gcry_mac_setkey(ctx->handle, (const void *)key, nkey); @@ -74,14 +74,10 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg, error_setg(errp, "Cannot set key: %s", gcry_strerror(err)); gcry_mac_close(ctx->handle); - goto error; + return NULL; } =20 - return ctx; - -error: - g_free(ctx); - return NULL; + return g_steal_pointer(&ctx); } =20 static void diff --git a/crypto/hmac-glib.c b/crypto/hmac-glib.c index b845133a05..1f17769c1c 100644 --- a/crypto/hmac-glib.c +++ b/crypto/hmac-glib.c @@ -46,7 +46,7 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg, const uint8_t *key, size_t nkey, Error **errp) { - QCryptoHmacGlib *ctx; + g_autofree QCryptoHmacGlib *ctx =3D NULL; =20 if (!qcrypto_hmac_supports(alg)) { error_setg(errp, "Unsupported hmac algorithm %s", @@ -60,14 +60,10 @@ void *qcrypto_hmac_ctx_new(QCryptoHashAlgo alg, (const uint8_t *)key, nkey); if (!ctx->ghmac) { error_setg(errp, "Cannot initialize hmac and set key"); - goto error; + return NULL; } =20 - return ctx; - -error: - g_free(ctx); - return NULL; + return g_steal_pointer(&ctx); } =20 static void diff --git a/crypto/ivgen-essiv.c b/crypto/ivgen-essiv.c index 3d5a188795..d5fa269888 100644 --- a/crypto/ivgen-essiv.c +++ b/crypto/ivgen-essiv.c @@ -31,10 +31,10 @@ static int qcrypto_ivgen_essiv_init(QCryptoIVGen *ivgen, const uint8_t *key, size_t nkey, Error **errp) { - uint8_t *salt; + g_autofree uint8_t *salt =3D NULL; size_t nhash; size_t nsalt; - QCryptoIVGenESSIV *essiv =3D g_new0(QCryptoIVGenESSIV, 1); + g_autofree QCryptoIVGenESSIV *essiv =3D g_new0(QCryptoIVGenESSIV, 1); =20 /* Not necessarily the same as nkey */ nsalt =3D qcrypto_cipher_get_key_len(ivgen->cipher); @@ -46,8 +46,6 @@ static int qcrypto_ivgen_essiv_init(QCryptoIVGen *ivgen, if (qcrypto_hash_bytes(ivgen->hash, (const gchar *)key, nkey, &salt, &nhash, errp) < 0) { - g_free(essiv); - g_free(salt); return -1; } =20 @@ -57,13 +55,10 @@ static int qcrypto_ivgen_essiv_init(QCryptoIVGen *ivgen, salt, MIN(nhash, nsalt), errp); if (!essiv->cipher) { - g_free(essiv); - g_free(salt); return -1; } =20 - g_free(salt); - ivgen->private =3D essiv; + ivgen->private =3D g_steal_pointer(&essiv); =20 return 0; } @@ -75,7 +70,7 @@ static int qcrypto_ivgen_essiv_calculate(QCryptoIVGen *iv= gen, { QCryptoIVGenESSIV *essiv =3D ivgen->private; size_t ndata =3D qcrypto_cipher_get_block_len(ivgen->cipher); - uint8_t *data =3D g_new(uint8_t, ndata); + g_autofree uint8_t *data =3D g_new(uint8_t, ndata); =20 sector =3D cpu_to_le64(sector); memcpy(data, (uint8_t *)§or, MIN(sizeof(sector), ndata)); @@ -88,7 +83,6 @@ static int qcrypto_ivgen_essiv_calculate(QCryptoIVGen *iv= gen, data, ndata, errp) < 0) { - g_free(data); return -1; } =20 @@ -99,7 +93,6 @@ static int qcrypto_ivgen_essiv_calculate(QCryptoIVGen *iv= gen, if (ndata < niv) { memset(iv + ndata, 0, niv - ndata); } - g_free(data); return 0; } =20 diff --git a/crypto/ivgen.c b/crypto/ivgen.c index 6b7d24d889..9f1f7d7dca 100644 --- a/crypto/ivgen.c +++ b/crypto/ivgen.c @@ -33,7 +33,7 @@ QCryptoIVGen *qcrypto_ivgen_new(QCryptoIVGenAlgo alg, const uint8_t *key, size_t nkey, Error **errp) { - QCryptoIVGen *ivgen =3D g_new0(QCryptoIVGen, 1); + g_autofree QCryptoIVGen *ivgen =3D g_new0(QCryptoIVGen, 1); =20 ivgen->algorithm =3D alg; ivgen->cipher =3D cipheralg; @@ -51,16 +51,14 @@ QCryptoIVGen *qcrypto_ivgen_new(QCryptoIVGenAlgo alg, break; default: error_setg(errp, "Unknown block IV generator algorithm %d", alg); - g_free(ivgen); return NULL; } =20 if (ivgen->driver->init(ivgen, key, nkey, errp) < 0) { - g_free(ivgen); return NULL; } =20 - return ivgen; + return g_steal_pointer(&ivgen); } =20 =20 diff --git a/crypto/secret_keyring.c b/crypto/secret_keyring.c index 78d7f09b3b..3b332276ef 100644 --- a/crypto/secret_keyring.c +++ b/crypto/secret_keyring.c @@ -41,7 +41,7 @@ qcrypto_secret_keyring_load_data(QCryptoSecretCommon *sec= _common, Error **errp) { QCryptoSecretKeyring *secret =3D QCRYPTO_SECRET_KEYRING(sec_common); - uint8_t *buffer =3D NULL; + g_autofree uint8_t *buffer =3D NULL; long retcode; =20 *output =3D NULL; @@ -61,12 +61,11 @@ qcrypto_secret_keyring_load_data(QCryptoSecretCommon *s= ec_common, =20 retcode =3D keyctl_read(secret->serial, buffer, retcode); if (retcode < 0) { - g_free(buffer); goto keyctl_error; } =20 *outputlen =3D retcode; - *output =3D buffer; + *output =3D g_steal_pointer(&buffer); return; =20 keyctl_error: --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538124; cv=none; d=zohomail.com; s=zohoarc; b=WIjLtXRHp6DQFlqWfIdS+v7ZRuHZhExi5cgStAkgC5+SOJ6DjAzilDwY3TYCSJ67wiE4mBO09L47LWGa4+lnHzRWgrWoqrxh/44060fZA3uWSEYIPG31jntLi3vR6BQu/Uz48RBl7xgvwyzqIpi3aRfOl2DoIxVi4PkAMl4LdWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538124; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qI+mYyMyZ0x0hsc/90NJLML+6JXug8Wb8HHAvXkC5aQ=; b=lNL0FuTswDe3VdXYeoXpRGNMSpnL9SoGAoyPFuHWRovOeGewcDqlTxRxSzrbg0YqqY5u6sC2DWLtrHboK/Yjn1UaSkx/Th7OVCO8DC9dDFgCIJ+dApqTb82j/rxGFUy+YtkZ0vPrb6mc69+vLaA76f/XklvH2n4NEatCwqh5k6o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538124484863.5319643280749; Fri, 4 Sep 2026 09:08:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRP-0003tu-PF; Fri, 04 Sep 2026 12:06:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRO-0003sQ-2K for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:06:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRM-0006dV-6c for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:06:57 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-553--0uarJx2MlCAmM5daV9wsw-1; Fri, 04 Sep 2026 12:06:53 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 524DE18CDD49; Fri, 4 Sep 2026 16:06:52 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6B3113001D37; Fri, 4 Sep 2026 16:06:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538015; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qI+mYyMyZ0x0hsc/90NJLML+6JXug8Wb8HHAvXkC5aQ=; b=UaTaLzSClQvqZ2ZjeEosd3sAY1fxYk4JRGYgzdVq4qY2Mm1VOaAlq8qTyeT42J2QejxfRW H655ryLDJcNK1vUGCG/Cs6V1VfWZP/QGpyXLrLMH7ISYd/MsoRGHUxdfXrTVpS2isdSiNx BODI8V3BYkpg9/bVu6yh9/oPNw7A/0A= X-MC-Unique: -0uarJx2MlCAmM5daV9wsw-1 X-Mimecast-MFC-AGG-ID: -0uarJx2MlCAmM5daV9wsw_1788538012 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , Zhuoying Cai Subject: [PULL v2 02/13] crypto/x509-utils: don't double set errp Date: Fri, 4 Sep 2026 17:06:32 +0100 Message-ID: <20260904160643.353833-3-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538127377154100 From: Marc-Andr=C3=A9 Lureau qcrypto_x509_get_ecc_curve() already sets errp on failure. Fixes: e8317c4c9f68 ("crypto/x509-utils: Add helper functions for DIAG 320 = subcode 2") Reviewed-by: Zhuoying Cai Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- crypto/x509-utils.c | 1 - 1 file changed, 1 deletion(-) diff --git a/crypto/x509-utils.c b/crypto/x509-utils.c index e4767f9838..34cbfca26b 100644 --- a/crypto/x509-utils.c +++ b/crypto/x509-utils.c @@ -325,7 +325,6 @@ int qcrypto_x509_check_ecc_curve_p521(uint8_t *cert, si= ze_t size, Error **errp) =20 curve_id =3D qcrypto_x509_get_ecc_curve(cert, size, errp); if (curve_id =3D=3D -1) { - error_setg(errp, "Failed to get ECC curve"); return -1; } =20 --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538030; cv=none; d=zohomail.com; s=zohoarc; b=DjZpDzbjWvjqNHzio2BUyJL7nUBT7ACONYkMMj8bYhxskuZ+7i23yGggT/NdyoFbZeijfOvFwivkkQYysq4HP97w9AsSjdoNYU+ilsXG9cirtPoH3gXI51181HfxG6Xok/S8K5gXLCl42h105/aQoZzAxJ3lFimq3cFKqOLJOSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538030; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2F1EM5KTW+1BaWQLulA9va3t+jcszUrzsYCgV/+dh2E=; b=nKR9iMzJP4C8qVGXptIeRn87P91iHag4VhCI2VrbdI9CKvEXUp7k/aF6Kw2Y8PF44vv8rAgMoBOnDwcp1Hj7ifca9mpDreY1+ooqVKTOEHiqx1m1wfhjODkfYaRbtI3d1QKfQdyco5m0jWRi4r7grsPjqgc6YNozE5Ei0p87Owc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538030806961.6550395676416; Fri, 4 Sep 2026 09:07:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRU-0003yR-8u; Fri, 04 Sep 2026 12:07:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRS-0003ws-15 for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRQ-0006eD-B8 for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:01 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-d3qkqipGPqOMHIfESiixVA-1; Fri, 04 Sep 2026 12:06:56 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C9A65180AD5C; Fri, 4 Sep 2026 16:06:54 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C02033001D37; Fri, 4 Sep 2026 16:06:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538019; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2F1EM5KTW+1BaWQLulA9va3t+jcszUrzsYCgV/+dh2E=; b=DZbQlzBSXPrdSIeic1CrkvCBUl5K3U7Xv1svrLZi/7bmOhdwjAYBNTkr0I0kdz0mB8rUlO qVQ1r9EXzY7ovBRVBlDkb+eWNKbkATL6k1UYXl/wp0yImDKwvVLD1mblDYhXTTt/csF1EI XZR6gQKLOQ26TFBZTpNzDuQydzpUTag= X-MC-Unique: d3qkqipGPqOMHIfESiixVA-1 X-Mimecast-MFC-AGG-ID: d3qkqipGPqOMHIfESiixVA_1788538014 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , Zhuoying Cai Subject: [PULL v2 03/13] crypto/x509-utils: propagate the error Date: Fri, 4 Sep 2026 17:06:33 +0100 Message-ID: <20260904160643.353833-4-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538034039154100 From: Marc-Andr=C3=A9 Lureau Propagate the error when qcrypto_x509_get_pk_algorithm fails, instead of falling through to return 0 (success) with *errp set. Fixes: e8317c4c9f68 ("crypto/x509-utils: Add helper functions for DIAG 320 = subcode 2") Reviewed-by: Zhuoying Cai Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- crypto/x509-utils.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crypto/x509-utils.c b/crypto/x509-utils.c index 34cbfca26b..edcc44de80 100644 --- a/crypto/x509-utils.c +++ b/crypto/x509-utils.c @@ -319,6 +319,9 @@ int qcrypto_x509_check_ecc_curve_p521(uint8_t *cert, si= ze_t size, Error **errp) int curve_id; =20 algo =3D qcrypto_x509_get_pk_algorithm(cert, size, errp); + if (algo < 0) { + return -1; + } if (algo !=3D GNUTLS_PK_ECDSA) { return 0; } --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538085; cv=none; d=zohomail.com; s=zohoarc; b=FBXAbfEFwuMYw7s6Or4hek1yE4Ia3ksVNKrGKpRFsa6Rt+LRi2ocl1TGOtwI94kR5MGJCz4WVCUGtkmhmzOAxpYcJDCn2qLDmNKGf7iibcxiB3Id7McvtHNroY1po9hBKYj3iIsXW6ycAonBxnBN7rH0Sg48vVqebyE7oYLYDzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538085; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ASYz6iulwfFvbmqEMTfqctGI341Oz4dZKbFqz9gwcLM=; b=AFIntaKPMIDTR7KqSK089+etDjgKhpC6eShu/iW0925A8WLbyTdGz/jRvIRyzjDqJOatT7lYKzAYknW9t/C5fG2gNTwCNh7v/sOyCeuTf6DR+Gy3Bi0lxf8bspiLoAjFy41FRHeyn9D/2JnF71zjdsF5dCP/CgFMJP1esdKxES0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538085982264.8225213626954; Fri, 4 Sep 2026 09:08:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRr-0004Fa-Ba; Fri, 04 Sep 2026 12:07:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRT-0003xg-VZ for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRS-0006eQ-E9 for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:03 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-WOpem3eQNiuOWqe33kvi9Q-1; Fri, 04 Sep 2026 12:06:58 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 38D5D195399A; Fri, 4 Sep 2026 16:06:57 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 284663001D37; Fri, 4 Sep 2026 16:06:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538021; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ASYz6iulwfFvbmqEMTfqctGI341Oz4dZKbFqz9gwcLM=; b=ddi8xPnonDJFYbgi7l3bmKcQoBxh6SaUHRLcS923jVhTzzsodRijOdJXx9bkiKrhej5Hrk ck8X5os5qwLUOddhDZBkKg4cERn6IfoUfU9wHFGgmmCcTlC4iFCVu6eNCT9w3msKSdsbOs SRV5WGB+Ek5uc01EolJWZrqaeBS/h7o= X-MC-Unique: WOpem3eQNiuOWqe33kvi9Q-1 X-Mimecast-MFC-AGG-ID: WOpem3eQNiuOWqe33kvi9Q_1788538017 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , qemu-stable@nongnu.org, "Denis V. Lunev" Subject: [PULL v2 04/13] io/channel-socket: do not treat a zero length write as an error Date: Fri, 4 Sep 2026 17:06:34 +0100 Message-ID: <20260904160643.353833-5-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538088746154100 From: Denis V. Lunev qio_channel_socket_writev() checks "ret <=3D 0" after sendmsg(). A zero length iovec is written successfully and returns 0, so the success falls into the errno switch, which acts on whatever the last failing syscall left in errno. A stale EAGAIN turns it into QIO_CHANNEL_ERR_BLOCK with errp untouched, and a caller which treats every negative return as fatal then passes a NULL Error to error_get_pretty(). The websocket handshake does exactly that, so an unauthenticated client crashes QEMU during the greeting. Returning 0 is safe for callers which loop until everything is written. qio_channel_writev_full_all() has no zero progress guard, but iov_copy() yields no entries for a zero length write, so that loop is never entered. A connected stream socket returns 0 only when there is nothing to send. The WIN32 implementation in the same file uses "ret < 0". Fixes: CVE-2026-84788 Fixes: 559607ea173a ("io: add QIOChannelSocket class") Cc: qemu-stable@nongnu.org Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev Signed-off-by: Daniel P. Berrang=C3=A9 --- io/channel-socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io/channel-socket.c b/io/channel-socket.c index 12773b832c..7920cee639 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -667,7 +667,7 @@ static ssize_t qio_channel_socket_writev(QIOChannel *io= c, =20 retry: ret =3D sendmsg(sioc->fd, &msg, sflags); - if (ret <=3D 0) { + if (ret < 0) { switch (errno) { case EAGAIN: return QIO_CHANNEL_ERR_BLOCK; --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538105; cv=none; d=zohomail.com; s=zohoarc; b=GsFCxB31fdipfcMVZAzOQMW2lBXG3KEArTsMUM9qUQxRy/1T5hORdOBaraEV6PH4vU4Hk2L80Gak0iZCTMgMHgUgciBqtKhnmggtptmCY6nIU13uq31jkIyOYGno3gj8SQfm/YE8vm2ExAmw5UQU+49y1kQHIKy/aDwAMc6ioC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538105; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=24q1MZ0ugZdhngBNFVmvW75PJPqXcwOs83tFjUN7CUc=; b=dKOLyw48/6zHZY89X7K5tiSlzzAzFiSlx01yThj2kUQZkpkvIcmopNyQydUUlCaccA74idIMV4UHxUe90+FuGFQ1K05LMnGdLoirx/czaPnaSq84AhhnUODDb9I9+n/bD8p8hhz09LrI414Msf341i/8Sha86SD9CobITIxefdY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538105434918.7423202599771; Fri, 4 Sep 2026 09:08:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRr-0004Co-6c; Fri, 04 Sep 2026 12:07:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRW-00045C-6X for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRT-0006eg-6E for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:05 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-695-yS6vEfXtPDmmsFk5M4d_rA-1; Fri, 04 Sep 2026 12:07:01 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F265118DEBBC; Fri, 4 Sep 2026 16:06:59 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B401B3001D84; Fri, 4 Sep 2026 16:06:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538022; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=24q1MZ0ugZdhngBNFVmvW75PJPqXcwOs83tFjUN7CUc=; b=gZCwb34mylxpTq71yB6BxdNkV13JlQ6o5vpa7zWAUM5QeCedvYkDm0wJc5D44XeGPz8YOv Nu3C5sBo22MzpQeHP7xxaST43DS5+ihY92EEYKNG7HZ+Xwk40r/wH6m7+3n9lmYDD6wsbM EDBUv0oPvaTp7s02QQQuepa9jtVlNyY= X-MC-Unique: yS6vEfXtPDmmsFk5M4d_rA-1 X-Mimecast-MFC-AGG-ID: yS6vEfXtPDmmsFk5M4d_rA_1788538020 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , qemu-stable@nongnu.org, "Denis V. Lunev" Subject: [PULL v2 05/13] io/channel-websock: send an HTTP 400 when the greeting has no space Date: Fri, 4 Sep 2026 17:06:35 +0100 Message-ID: <20260904160643.353833-6-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538106934154100 From: Denis V. Lunev qio_channel_websock_extract_headers() returns 0 without queueing a response when the request line contains no space, unlike every sibling check which jumps to bad_request. encoutput stays empty, yet qio_channel_websock_handshake_read() still reports success and the caller arms a G_IO_OUT watch to flush nothing. Flushing that empty buffer is where QEMU crashes. Any client can trigger it before authentication on a VNC websocket port: printf 'stats\r\nx\r\n\r\n' | nc $host $port Fixes: 07e95cd529af ("io: fully parse & validate HTTP headers for websocket= protocol handshake") Fixes: f69a8bde2935 ("io: send proper HTTP response for websocket errors") Fixes: CVE-2026-84788 Cc: qemu-stable@nongnu.org Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev Signed-off-by: Daniel P. Berrang=C3=A9 --- io/channel-websock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io/channel-websock.c b/io/channel-websock.c index 1929abf56a..66c91ed2a2 100644 --- a/io/channel-websock.c +++ b/io/channel-websock.c @@ -230,7 +230,7 @@ qio_channel_websock_extract_headers(QIOChannelWebsock *= ioc, tmp =3D strchr(buffer, ' '); if (!tmp) { error_setg(errp, "Missing HTTP path delimiter"); - return 0; + goto bad_request; } *tmp =3D '\0'; =20 --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538073; cv=none; d=zohomail.com; s=zohoarc; b=nZwVp8hzzBcdsygwqtBJQVXz8J3tmQNwDZvMhG8/v6P3AX+vw+YW1oCl9OU/xyQ8K9jpOVWyMtARF/RCO9q08sRGoHmD/GngK+OWSTRKMiJn7NnXkMvjZDeMN5NoLd97cqEPLFLkp4DN/ZuOWrZ9C9PxdFzQs70wxCUZPjG0eCA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538073; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UMnbT3lrKNN1v0P6OiNnV9u3B7JZqFQBvQYeYiSjTh0=; b=afh1wNnpznZWModJ8IODFSMWJ+GXaHeZdzWvGMiKfIzNZkYGuf0elry+4G77wKKVN8OeOpjqK59t46CjxABbwBndSaPfC6KUb5iTz7obOOPYbNiFSAcxOR2Icwpvvz3ucdhxmjsA/shcpR0W72lQWt4QWVRZo6AEqbzpNtuF2MA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538073761717.355934479162; Fri, 4 Sep 2026 09:07:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRv-0004Va-3x; Fri, 04 Sep 2026 12:07:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRf-00049h-0O for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRY-0006fP-1O for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:09 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-315-0wd75MoYNkSt_N5_g81RPg-1; Fri, 04 Sep 2026 12:07:03 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8EF4D18CD2B3; Fri, 4 Sep 2026 16:07:02 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5B4C43001D37; Fri, 4 Sep 2026 16:07:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538026; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UMnbT3lrKNN1v0P6OiNnV9u3B7JZqFQBvQYeYiSjTh0=; b=X6BelGbJoSoVHCYjFk2G1t2YTEMsPB0DcPLJVYiFTGAxF8Y3qcdP7DAiRnYOx6jk4cpu8E rwXoeW51/YYPkYiMBv5sBb4S5iYIKpTnbdHGGfledxj4FR/+BfUYTFPd/8sHY3sSxGGcEm zA15o63wuXKyUdCbTQ9TcoSDOspWCXo= X-MC-Unique: 0wd75MoYNkSt_N5_g81RPg-1 X-Mimecast-MFC-AGG-ID: 0wd75MoYNkSt_N5_g81RPg_1788538022 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , qemu-stable@nongnu.org, "Denis V. Lunev" Subject: [PULL v2 06/13] io/channel-websock: handle a blocked write during the handshake Date: Fri, 4 Sep 2026 17:06:36 +0100 Message-ID: <20260904160643.353833-7-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538076614154100 From: Denis V. Lunev qio_channel_websock_handshake_send() treats every negative return from qio_channel_write() as fatal and passes err to error_get_pretty(). QIO_CHANNEL_ERR_BLOCK is negative but leaves err NULL, so a socket which cannot take the response immediately crashes QEMU before the client has authenticated. Keep the G_IO_OUT watch armed and retry instead. Fixes: 2d1d0e70cf3e ("io: add QIOChannelWebsock class") Fixes: CVE-2026-84788 Cc: qemu-stable@nongnu.org Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev Signed-off-by: Daniel P. Berrang=C3=A9 --- io/channel-websock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/io/channel-websock.c b/io/channel-websock.c index 66c91ed2a2..8f27b1f12b 100644 --- a/io/channel-websock.c +++ b/io/channel-websock.c @@ -562,6 +562,11 @@ static gboolean qio_channel_websock_handshake_send(QIO= Channel *ioc, wioc->encoutput.offset, &err); =20 + if (ret =3D=3D QIO_CHANNEL_ERR_BLOCK) { + /* Socket buffer is full, the G_IO_OUT watch stays armed */ + return TRUE; + } + if (ret < 0) { trace_qio_channel_websock_handshake_fail(ioc, error_get_pretty(err= )); qio_task_set_error(task, err); --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538089; cv=none; d=zohomail.com; s=zohoarc; b=dsrPDbA/dpC5NIY2W7kd27BDtFewhyuFHcrauETDn2KPCA3FHK8OZM8r3t4vUzX2txUYxMnb4ztvmtg48vKGGry4tUf3ZD25Haiz5NXJ6kuX8UXgBoWLDLY0qnWnq2DFzed3CgyZS+yuIPAYZvQEiHzPK+M9WdEaJfVmImKRvPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538089; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FEq322J/epNoMJg2yxOKARaqU+03ZEl9jNI/Z3JgdVE=; b=YTOyAXt18B9EFtPeettPPfOYpnF+WWQIk3hDcYg/5o8WwZhReFfzaxJrySCmpagyOQHFUdqBM4rHT7TBCMEo9huIGV8WVMixm/7VCvrvepfSLCmD/O96CnTYJaszGQxC1MO3OlpgUlAwdU4vHCG03MUgndhjBmCx9dStluYMHPQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538089440708.2891946876626; Fri, 4 Sep 2026 09:08:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WS2-0004i8-LS; Fri, 04 Sep 2026 12:07:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRq-0004Ek-5R for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRl-0006g7-9a for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:25 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-376-cgTClRW3Me69zOkWj6BIGg-1; Fri, 04 Sep 2026 12:07:06 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2AE2919540CF; Fri, 4 Sep 2026 16:07:05 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EA2C13001D37; Fri, 4 Sep 2026 16:07:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538031; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FEq322J/epNoMJg2yxOKARaqU+03ZEl9jNI/Z3JgdVE=; b=XKV/5srPzm6NPnJfES8CvD4qoerpthD4QMmYZmARae+Ax9LsLH02K9qt9ZZ2dxtq7GYfZY 2xMw1ijEdgEtPLntYlfOpMJDYTTYXsOMs9gxNkKkbq0r6bRLp7oS4y3bz8MAUe0JJDxq5W HrJx+cwi0rtGvFLr8HPy9yJUBvHm9Ls= X-MC-Unique: cgTClRW3Me69zOkWj6BIGg-1 X-Mimecast-MFC-AGG-ID: cgTClRW3Me69zOkWj6BIGg_1788538025 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , "Denis V. Lunev" Subject: [PULL v2 07/13] tests/unit: add websock handshake test Date: Fri, 4 Sep 2026 17:06:37 +0100 Message-ID: <20260904160643.353833-8-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538094795154100 From: Denis V. Lunev Check that malformed HTTP greetings are answered with an HTTP 400 rather than an empty response. The no-space case is the one which used to leave the response buffer empty. Fixes: CVE-2026-84788 Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev [DB: exclude test from Windows since it depends on AF_UNIX which is not universally available] Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/unit/meson.build | 1 + tests/unit/test-io-channel-websock.c | 105 +++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 tests/unit/test-io-channel-websock.c diff --git a/tests/unit/meson.build b/tests/unit/meson.build index 3a9866c1f2..e47bc7225a 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -115,6 +115,7 @@ if have_block endif if host_os !=3D 'windows' tests +=3D { + 'test-io-channel-websock': [io], 'test-image-locking': [testblock], 'test-nested-aio-poll': [], } diff --git a/tests/unit/test-io-channel-websock.c b/tests/unit/test-io-chan= nel-websock.c new file mode 100644 index 0000000000..2a55a4bcdf --- /dev/null +++ b/tests/unit/test-io-channel-websock.c @@ -0,0 +1,105 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * QEMU I/O channel websock test + * + * Copyright (c) 2026 Virtuozzo International GmbH + */ + +#include "qemu/osdep.h" +#include "io/channel-websock.h" +#include "io/channel-socket.h" +#include "qapi/error.h" +#include "qemu/module.h" +#include "qemu/sockets.h" + +typedef struct { + bool finished; + bool failed; +} QIOChannelWebsockHandshake; + +static void test_websock_handshake_done(QIOTask *task, gpointer opaque) +{ + QIOChannelWebsockHandshake *res =3D opaque; + + res->finished =3D true; + res->failed =3D qio_task_propagate_error(task, NULL); +} + +/* + * Drives a server-side handshake against @request and returns whatever + * the server wrote back, NUL terminated. The handshake is expected to + * fail; the point of the test is the HTTP response that goes with it. + */ +static char *test_websock_handshake_reply(const char *request) +{ + QIOChannelWebsockHandshake res =3D { false, false }; + QIOChannelSocket *cli, *srv; + QIOChannelWebsock *wioc; + GMainContext *mainloop; + int channel[2]; + char *reply; + ssize_t got; + + g_assert(qemu_socketpair(AF_UNIX, SOCK_STREAM, 0, channel) =3D=3D 0); + + cli =3D qio_channel_socket_new_fd(channel[0], &error_abort); + srv =3D qio_channel_socket_new_fd(channel[1], &error_abort); + qio_channel_set_blocking(QIO_CHANNEL(srv), false, &error_abort); + qio_channel_set_blocking(QIO_CHANNEL(cli), false, &error_abort); + + wioc =3D qio_channel_websock_new_server(QIO_CHANNEL(srv)); + qio_channel_websock_handshake(wioc, test_websock_handshake_done, + &res, NULL); + + qio_channel_write_all(QIO_CHANNEL(cli), request, strlen(request), + &error_abort); + + mainloop =3D g_main_context_default(); + while (!res.finished) { + g_main_context_iteration(mainloop, TRUE); + } + g_assert(res.failed); + + reply =3D g_malloc0(1024); + got =3D qio_channel_read(QIO_CHANNEL(cli), reply, 1023, &error_abort); + if (got > 0) { + reply[got] =3D '\0'; + } + + object_unref(OBJECT(wioc)); + object_unref(OBJECT(srv)); + object_unref(OBJECT(cli)); + + return reply; +} + +static void test_websock_bad_request(const void *opaque) +{ + const char *request =3D opaque; + g_autofree char *reply =3D test_websock_handshake_reply(request); + + g_assert_true(g_str_has_prefix(reply, "HTTP/1.1 400 Bad Request\r\n")); +} + +int main(int argc, char **argv) +{ + module_call_init(MODULE_INIT_QOM); + g_test_init(&argc, &argv, NULL); + +#define TEST_BAD_REQUEST(name, request) \ + g_test_add_data_func("/io/channel/websock/bad-request/" name, \ + request, test_websock_bad_request) + + /* + * A greeting with no space at all used to leave the response buffer + * empty, which drove the handshake into a zero length write. + */ + TEST_BAD_REQUEST("no-space", "stats\r\nx\r\n\r\n"); + TEST_BAD_REQUEST("method-only", "GET\r\nx\r\n\r\n"); + TEST_BAD_REQUEST("no-version", "GET /\r\nx\r\n\r\n"); + TEST_BAD_REQUEST("bad-method", "POST / HTTP/1.1\r\nx: y\r\n\r\n"); + TEST_BAD_REQUEST("bad-version", "GET / HTTP/1.0\r\nx: y\r\n\r\n"); + + return g_test_run(); +} --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538104; cv=none; d=zohomail.com; s=zohoarc; b=jklV3zUDKOmJPVr/s8pk5LPADakZhxGtfDokPpidwneWtzXYGgwfiWDw9vp08R3WKAdXYBukqNq0qNbFblvZwTdn5psASzdUMHt1v1LIha6++3CKLh/SKlsawQ2Y0SH3Pk7Ck4ldDtLSzMFMbEP0t51GQ+jCfUHgn5GEhXpPdiA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538104; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=90HkXVzu7ZLEuo0XZqsDoRCf5zysB6xWietFG/AXiGs=; b=J31He7VUfm5GJAUSMoWNwALhOoGe9RD3FPEs7SHOYoGZr4ZDOKkdmzO0WzsQLR4FRLiOaQgbBRCYulH2dWdfr/HiHhfh7g64kkYU7VDUou6hUa8fDmTL4w7Y0iIgVHZlta8fb6+z7lTUVE3kdFmxjd4Uh+V4f5ThiJrKp3Tp/cE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538104308371.80509545409404; Fri, 4 Sep 2026 09:08:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRs-0004KM-5Q; Fri, 04 Sep 2026 12:07:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRn-0004Bm-6F for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRd-0006fk-JW for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:18 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-336-s4xYCGEuNKmwKNRq9-mNVA-1; Fri, 04 Sep 2026 12:07:08 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 81F6718D726A; Fri, 4 Sep 2026 16:07:07 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7D1263001D84; Fri, 4 Sep 2026 16:07:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=90HkXVzu7ZLEuo0XZqsDoRCf5zysB6xWietFG/AXiGs=; b=RjqU4h5VkjJ637Oi5Qt+OodG6mowQytXkQ3wkerXCU1YIyro+raznDZi008HkNw4tBFurL /w8I4c5CUP5mVj9z9y4sVQPJkl3dK1hDYoOWAhxU8cTFAj2CD2ZOnP8Pa5yWHii2MGQLI/ U09+5oSryJenuljcoPX+kWEz5xfqfww= X-MC-Unique: s4xYCGEuNKmwKNRq9-mNVA-1 X-Mimecast-MFC-AGG-ID: s4xYCGEuNKmwKNRq9-mNVA_1788538027 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , qemu-stable@nongnu.org, "Denis V. Lunev" Subject: [PULL v2 08/13] io/channel-websock: do not lose QIO_CHANNEL_ERR_BLOCK while reading Date: Fri, 4 Sep 2026 17:06:38 +0100 Message-ID: <20260904160643.353833-9-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538106948154100 From: Denis V. Lunev qio_channel_websock_handshake_read() folds every negative return from qio_channel_read() into -1. QIO_CHANNEL_ERR_BLOCK leaves errp unset, so qio_channel_websock_handshake_io() then hands a NULL Error to error_get_pretty() and QEMU dies. The master channel is non-blocking and, for a wss:// client, is a TLS channel. A G_IO_IN wakeup carrying only part of a TLS record makes gnutls report EAGAIN, which is all it takes to reach this before the client has authenticated. ERR_BLOCK here means the headers are not complete yet, which is what a 0 return already tells the caller. Report it that way and keep waiting. The watch is level triggered, so an incomplete record sitting in the socket spins the main loop until the rest of it arrives. That is bounded by the round trip and is what every reader layered over TLS already does. Fixes: 2d1d0e70cf3e ("io: add QIOChannelWebsock class") Fixes: CVE-2026-84788 Cc: qemu-stable@nongnu.org Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev Signed-off-by: Daniel P. Berrang=C3=A9 --- io/channel-websock.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/io/channel-websock.c b/io/channel-websock.c index 8f27b1f12b..461abcae48 100644 --- a/io/channel-websock.c +++ b/io/channel-websock.c @@ -492,6 +492,9 @@ static int qio_channel_websock_handshake_read(QIOChanne= lWebsock *ioc, buffer_reserve(&ioc->encinput, want); ret =3D qio_channel_read(ioc->master, (char *)buffer_end(&ioc->encinput), want, errp); + if (ret =3D=3D QIO_CHANNEL_ERR_BLOCK) { + return 0; + } if (ret < 0) { return -1; } --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538063; cv=none; d=zohomail.com; s=zohoarc; b=QxftdAJF4kIxigIqJjHjcNPvlpzYxSU6/Gj4Nhqq0swx2OshkZj4n3pbbPax6VuLkoR71UKIyvN+/W/VGregXwTwRnzhFKGV/EYB8XFK/fGnLaFKF9XhLnClJNQ3qcODz2RR8wOcx9L8zqnLHPu5Pt93LwGtLkBznZ0x5aLgfTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538063; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NmeywneEt7+8x5kfLx9jyfan/B1X/zkeAiDGoB6OxEs=; b=Sqp1N3hKv4dkjyEalnsI/SxjK8Aw7vczoeA1u0VHslgk9NCJRPXb80wUBHl7hCYZ8OmiHNnleqRJf8Ww7TCO/Y+fyuoxbTteJlbMsxhElctvNGR8YivhI+pY8ardtTJOhzGmbo/wvYrvRfb2/GqkGRbgdYedQW/BnhGv/4hijUk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538063468819.8052329981072; Fri, 4 Sep 2026 09:07:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRs-0004Mc-CY; Fri, 04 Sep 2026 12:07:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRn-0004C6-G3 for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRh-0006gK-Ct for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:20 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-216-WzxHh72iMEudfOilL_8CjQ-1; Fri, 04 Sep 2026 12:07:11 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C9232180886E; Fri, 4 Sep 2026 16:07:09 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D64183001D37; Fri, 4 Sep 2026 16:07:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NmeywneEt7+8x5kfLx9jyfan/B1X/zkeAiDGoB6OxEs=; b=iNWPsUxTUGCzL4UL3sWFoQwwFylqAbbMTIDMKEpMhXv+ulqvF2wOnSBBl3ErZOc8t6MvUC zkun7kLIg+1mfrMcF6PPt9qKKJf0btmi/PD4lN1FvlFqRAfuXVCdXqSv40cjifuA2ohOlT MWg+w/fBornur9EUuyHKhBe4OUPhScY= X-MC-Unique: WzxHh72iMEudfOilL_8CjQ-1 X-Mimecast-MFC-AGG-ID: WzxHh72iMEudfOilL_8CjQ_1788538029 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , "Denis V. Lunev" Subject: [PULL v2 09/13] tests/unit: cover blocked IO during the websock handshake Date: Fri, 4 Sep 2026 17:06:39 +0100 Message-ID: <20260904160643.353833-10-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538066456154100 From: Denis V. Lunev Add a channel which reports QIO_CHANNEL_ERR_BLOCK on demand, the way a TLS channel does when a record arrives split across segments or when the socket cannot take the whole reply at once, and drive the server handshake through it in both directions. Without the fixes each direction dereferences a NULL Error and the test dies on SIGSEGV. Cc: Daniel P. Berrang=C3=A9 Cc: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Denis V. Lunev Signed-off-by: Daniel P. Berrang=C3=A9 --- tests/unit/test-io-channel-websock.c | 150 ++++++++++++++++++++++++++- 1 file changed, 147 insertions(+), 3 deletions(-) diff --git a/tests/unit/test-io-channel-websock.c b/tests/unit/test-io-chan= nel-websock.c index 2a55a4bcdf..88da24f993 100644 --- a/tests/unit/test-io-channel-websock.c +++ b/tests/unit/test-io-channel-websock.c @@ -12,6 +12,123 @@ #include "qapi/error.h" #include "qemu/module.h" #include "qemu/sockets.h" +#include "qom/object.h" + +#define TYPE_QIO_CHANNEL_STALL "qio-channel-stall" +OBJECT_DECLARE_SIMPLE_TYPE(QIOChannelStall, QIO_CHANNEL_STALL) + +/* + * Reports QIO_CHANNEL_ERR_BLOCK for the first @rstalls reads and @wstalls + * writes, the way a TLS channel does when a record arrives split across T= CP + * segments or the socket cannot take the whole reply at once. + */ +struct QIOChannelStall { + QIOChannel parent; + QIOChannel *master; + unsigned rstalls; + unsigned wstalls; +}; + +static ssize_t qio_channel_stall_readv(QIOChannel *ioc, + const struct iovec *iov, + size_t niov, + int **fds, + size_t *nfds, + int flags, + Error **errp) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(ioc); + + if (sioc->rstalls) { + sioc->rstalls--; + return QIO_CHANNEL_ERR_BLOCK; + } + return qio_channel_readv_full(sioc->master, iov, niov, fds, nfds, + flags, errp); +} + +static ssize_t qio_channel_stall_writev(QIOChannel *ioc, + const struct iovec *iov, + size_t niov, + int *fds, + size_t nfds, + int flags, + Error **errp) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(ioc); + + if (sioc->wstalls) { + sioc->wstalls--; + return QIO_CHANNEL_ERR_BLOCK; + } + return qio_channel_writev_full(sioc->master, iov, niov, fds, nfds, + flags, errp); +} + +static int qio_channel_stall_set_blocking(QIOChannel *ioc, bool enabled, + Error **errp) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(ioc); + + return qio_channel_set_blocking(sioc->master, enabled, errp) ? 0 : -1; +} + +static int qio_channel_stall_close(QIOChannel *ioc, Error **errp) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(ioc); + + return qio_channel_close(sioc->master, errp); +} + +static GSource *qio_channel_stall_create_watch(QIOChannel *ioc, + GIOCondition condition) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(ioc); + + return qio_channel_create_watch(sioc->master, condition); +} + +static void qio_channel_stall_finalize(Object *obj) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL(obj); + + object_unref(OBJECT(sioc->master)); +} + +static void qio_channel_stall_class_init(ObjectClass *klass, + const void *class_data G_GNUC_UNU= SED) +{ + QIOChannelClass *ioc_klass =3D QIO_CHANNEL_CLASS(klass); + + ioc_klass->io_writev =3D qio_channel_stall_writev; + ioc_klass->io_readv =3D qio_channel_stall_readv; + ioc_klass->io_set_blocking =3D qio_channel_stall_set_blocking; + ioc_klass->io_close =3D qio_channel_stall_close; + ioc_klass->io_create_watch =3D qio_channel_stall_create_watch; +} + +static const TypeInfo qio_channel_stall_info =3D { + .parent =3D TYPE_QIO_CHANNEL, + .name =3D TYPE_QIO_CHANNEL_STALL, + .instance_size =3D sizeof(QIOChannelStall), + .instance_finalize =3D qio_channel_stall_finalize, + .class_init =3D qio_channel_stall_class_init, +}; + +static QIOChannelStall *qio_channel_stall_new(QIOChannel *master, + unsigned rstalls, + unsigned wstalls) +{ + QIOChannelStall *sioc =3D QIO_CHANNEL_STALL( + object_new(TYPE_QIO_CHANNEL_STALL)); + + object_ref(OBJECT(master)); + sioc->master =3D master; + sioc->rstalls =3D rstalls; + sioc->wstalls =3D wstalls; + + return sioc; +} =20 typedef struct { bool finished; @@ -31,10 +148,12 @@ static void test_websock_handshake_done(QIOTask *task,= gpointer opaque) * the server wrote back, NUL terminated. The handshake is expected to * fail; the point of the test is the HTTP response that goes with it. */ -static char *test_websock_handshake_reply(const char *request) +static char *test_websock_handshake_reply(const char *request, + unsigned rstalls, unsigned wstal= ls) { QIOChannelWebsockHandshake res =3D { false, false }; QIOChannelSocket *cli, *srv; + QIOChannelStall *stall; QIOChannelWebsock *wioc; GMainContext *mainloop; int channel[2]; @@ -48,7 +167,8 @@ static char *test_websock_handshake_reply(const char *re= quest) qio_channel_set_blocking(QIO_CHANNEL(srv), false, &error_abort); qio_channel_set_blocking(QIO_CHANNEL(cli), false, &error_abort); =20 - wioc =3D qio_channel_websock_new_server(QIO_CHANNEL(srv)); + stall =3D qio_channel_stall_new(QIO_CHANNEL(srv), rstalls, wstalls); + wioc =3D qio_channel_websock_new_server(QIO_CHANNEL(stall)); qio_channel_websock_handshake(wioc, test_websock_handshake_done, &res, NULL); =20 @@ -68,6 +188,7 @@ static char *test_websock_handshake_reply(const char *re= quest) } =20 object_unref(OBJECT(wioc)); + object_unref(OBJECT(stall)); object_unref(OBJECT(srv)); object_unref(OBJECT(cli)); =20 @@ -77,7 +198,23 @@ static char *test_websock_handshake_reply(const char *r= equest) static void test_websock_bad_request(const void *opaque) { const char *request =3D opaque; - g_autofree char *reply =3D test_websock_handshake_reply(request); + g_autofree char *reply =3D test_websock_handshake_reply(request, 0, 0); + + g_assert_true(g_str_has_prefix(reply, "HTTP/1.1 400 Bad Request\r\n")); +} + +static void test_websock_stalled_read(const void *opaque) +{ + const char *request =3D opaque; + g_autofree char *reply =3D test_websock_handshake_reply(request, 1, 0); + + g_assert_true(g_str_has_prefix(reply, "HTTP/1.1 400 Bad Request\r\n")); +} + +static void test_websock_stalled_write(const void *opaque) +{ + const char *request =3D opaque; + g_autofree char *reply =3D test_websock_handshake_reply(request, 0, 1); =20 g_assert_true(g_str_has_prefix(reply, "HTTP/1.1 400 Bad Request\r\n")); } @@ -85,6 +222,7 @@ static void test_websock_bad_request(const void *opaque) int main(int argc, char **argv) { module_call_init(MODULE_INIT_QOM); + type_register_static(&qio_channel_stall_info); g_test_init(&argc, &argv, NULL); =20 #define TEST_BAD_REQUEST(name, request) \ @@ -101,5 +239,11 @@ int main(int argc, char **argv) TEST_BAD_REQUEST("bad-method", "POST / HTTP/1.1\r\nx: y\r\n\r\n"); TEST_BAD_REQUEST("bad-version", "GET / HTTP/1.0\r\nx: y\r\n\r\n"); =20 + /* A read which blocks before any header arrives is not a fatal error.= */ + g_test_add_data_func("/io/channel/websock/stalled-read", + "stats\r\nx\r\n\r\n", test_websock_stalled_read); + g_test_add_data_func("/io/channel/websock/stalled-write", + "stats\r\nx\r\n\r\n", test_websock_stalled_write); + return g_test_run(); } --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538124; cv=none; d=zohomail.com; s=zohoarc; b=WVRdohhdP+6d5WMfAwQlmmfSgl+ou9Q2SwbKDmbfGtoDG/pGsihwA89wSr/YtaRApiVvCdPUOp1vinZvYakC2BjENeHdoqJOjbq2BofY0qDkx/2Utu8flShqeotBUqg5cRxaD3nISpJmGll1rt05wGLLFLqTSOI03zBrM40GhgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538124; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7OqtPa5IWQzCCF4mhdR/76Y7LhvQRMYOaMH/8a+7eNc=; b=RTqKAhuDK8rS0uXh1EIJ9oHOd978oyiQMVMgUm84ZXdSDXaCy7juKeT5hHU86lmPAab5FOwzP5j8u3cjD9qg6PAHygjToEeIQFHDVxN0dSIkUfiMHvKwuT0X4CjiJBNmZQ91gvdkMDY425zVQoO+WJCc4rK0K+GhTvMXgQlDN0I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538124452809.6015520919117; Fri, 4 Sep 2026 09:08:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WS3-0004p8-Ow; Fri, 04 Sep 2026 12:07:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRq-0004El-ER for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRm-0006gr-WF for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:26 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-534-R1GM-K8uMd6xK28yePHT4A-1; Fri, 04 Sep 2026 12:07:13 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 970CA18655AA; Fri, 4 Sep 2026 16:07:12 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 28A9D3001D37; Fri, 4 Sep 2026 16:07:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538035; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7OqtPa5IWQzCCF4mhdR/76Y7LhvQRMYOaMH/8a+7eNc=; b=MWvvx3Z8YdeRk9imSArCHzqsiGlOebwWgjhUBKpss4utO1ksW+ZsW51bLnDML0wqjpfaG8 fhkAJh4SU/3zUjXDn23VDv8APkEMck/WZbcCUFRfmEbYLNgVOfp121q/RYU/u/eP6ezPRg lNvtUYuOkv0PfBYswK6sxhiSJFpjk50= X-MC-Unique: R1GM-K8uMd6xK28yePHT4A-1 X-Mimecast-MFC-AGG-ID: R1GM-K8uMd6xK28yePHT4A_1788538032 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier , Thomas Huth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL v2 10/13] crypto: deprecate the AF_ALG crypto backend Date: Fri, 4 Sep 2026 17:06:40 +0100 Message-ID: <20260904160643.353833-11-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538127427154100 Linux 7.2 has deprecated the AF_ALG crypto backend: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit= /?id=3Da67afb1884ba815079bd43d5c998e155e03b08b6 And has documented it to be always slower than userspace crypto: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit= /?id=3D5624ea54f3ba5c83d2e5503411a31a8be0278c1e as a result of dropping support for zero-copy and hardware accelerators: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit= /?id=3D7524070f26d8d347c26787dc297fb844baa26abf https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit= /?id=3Dffdd2bc378953b525aca61902534e753f1f8e734 The main use case for the AF_ALG impl was to improve the performance of virtio-crypto with the cryptodev-backend-builtin driver. In practice this did not matter since 'cryptodev-backend-lkcf' can do offload to the kernel via the keyctl syscall, and 'cryptodev-vhost-user' can offload to an external process which can optionally integrate with hardware accelerators without kernel assistance. The AF_ALG backend has no user visible configuration options at runtime, it is unconditionally tried with any use of the cipher APIs. So it does not strictly have to go through the deprecation process, however, it is left available initially in case there was an unexpected use case that relies on it which may be faster with old kernels before the above Linux commits. Suggested-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/about/deprecated.rst | 21 +++++++++++++++++++++ meson.build | 6 ++++++ 2 files changed, 27 insertions(+) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 05e4ce8cf1..98c32991c9 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -434,6 +434,27 @@ ABI is long-obsolete. We are therefore deprecating bot= h OABI support and NWFPE emulation, and they will be removed in a future QEMU release. =20 +Build features +-------------- + +Crypto AF_ALG backend (since 11.2) +---------------------------------- + +The use of the AF_ALG backend for cryptography has been deprecated +with no replacement. + +The AF_ALG interface is deprecated by Linux 7.2 and all support +for hardware accelerators has been removed. It will thus always be +slower than userspace crypto due to the overhead of copying data +to kernel space. The GNUTLS, Nettle and GCrypt libraries supported +by QEMU all include a variety of hardware optimized crypto +implementations which should suffice for typical needs. + +For the virtio-crypto device, the 'cryptodev-backend-lkcf' backend +can offload some operations to the kernel via the keyctl syscall, +and the 'cryptodev-vhost-user' backend can offload the device +backend to an external process which can integrate with crypto +accelerators. =20 Backwards compatibility ----------------------- diff --git a/meson.build b/meson.build index 5c9de307b0..8528db72af 100644 --- a/meson.build +++ b/meson.build @@ -5070,3 +5070,9 @@ if not actually_reloc and (host_os =3D=3D 'windows' o= r get_option('relocatable')) message('QEMU will have to be installed under ' + get_option('prefix') += '.') message('Use --disable-relocatable to remove this warning.') endif + +if get_option('crypto_afalg').enabled() + warning('Use of the AF_ALG crypto backend is deprecated, ' + + 'since Linux 7.2 has deprecated the AF_ALG interface ' + + 'and removed its ability to use hardware accelerators.') +endif --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538133; cv=none; d=zohomail.com; s=zohoarc; b=JczbElDuoEYaCME5bPQWHeOTedRQgdn3vHLq4WwDU56YXhuMQ//fBUQXLHd6I8ED/nW7cTOYXZTNuuhN6oXv1hHcGy6LomGsU9dJ38Af2L47+8lctQ+o12sVpnGcBJGWoCinqwzQ751kJecaMganj3xOFV04p11G/RaqHw/TrvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538133; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DTUT43+RHi8NHXxIAoIvD125D1kVebBU14ssdRMhZl0=; b=No4QyAX7TJcvEWjHvR5IBpZxQ76aGgoq64bi3VwPef5LrQCZ51prkwuvMKDSEYqFbGRxJ2E2iTSiy7nWDfwE10ey/aXinvxMK2VIIPHJdQupm7O9nz7KCnKAwWou4dqDuySHLKnHNQORvOS44//M8tE9Ej+WCqSBzWqqdcfMBC8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538133843160.62646906472924; Fri, 4 Sep 2026 09:08:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRu-0004Uc-I9; Fri, 04 Sep 2026 12:07:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRq-0004Ej-4n for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRn-0006hq-8i for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:25 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-lmKtL9TtOMOrWUN-2hmo-Q-1; Fri, 04 Sep 2026 12:07:16 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9DB1E19541A9; Fri, 4 Sep 2026 16:07:14 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EA2B03001D37; Fri, 4 Sep 2026 16:07:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DTUT43+RHi8NHXxIAoIvD125D1kVebBU14ssdRMhZl0=; b=PdmQ1mPRrzHvcpRIml2hNLRV2dMH4fBtZ+XCdsF5HelJVdVT5erD68/kbIDoQeuATUjzvM mYEjyQvaI2yZhcD2hadqd/wGYxcXB4gQf02SclDVr/yixd/ubZMpFCTyuPWS5Dzph+XKdG qr1E/Z5WDdSxhrDaa0pXsD+diop0gM0= X-MC-Unique: lmKtL9TtOMOrWUN-2hmo-Q-1 X-Mimecast-MFC-AGG-ID: lmKtL9TtOMOrWUN-2hmo-Q_1788538034 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier Subject: [PULL v2 11/13] gitlab: use --emacs --quiet for checkpatch.pl instead of --terse Date: Fri, 4 Sep 2026 17:06:41 +0100 Message-ID: <20260904160643.353833-12-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538135423154100 The default checkpatch.pl output includes a lot of "progress" information... NN/MM Checking commit HASH (SUBJECT) total: 0 errors, 0 warnings, 105 lines checked for large patch series, this results in alot of noise from clean patches (which are the common case), obscuring the info about the patch violations. Since the alerts from gitlab job failures only include the last few lines of log output, we want the checkpatch.pl output to be highly relevant to the failure. We previously addressed that by adding use of the --terse flag in 7025111a199b97ae806817788bec50f456c47d85, but that made the output a bit too terse. It no longer prints the offending line of code, so understanding the CI job failure now requires manually re-running checkpatch.pl locally. Using the '--quiet' flag gets rid of the "Check commit HASH.." messages which create noise, while adding '--emacs' causes the WARNING/ERROR message lines to include the commit hash. This is a more useful tradeoff for the CI job logs. The output is limited to only patches which include code violations, while still including the offending lines of code in the output. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Daniel P. Berrang=C3=A9 --- .gitlab-ci.d/check-patch.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.d/check-patch.py b/.gitlab-ci.d/check-patch.py index be13e6f77d..45be77295d 100755 --- a/.gitlab-ci.d/check-patch.py +++ b/.gitlab-ci.d/check-patch.py @@ -46,7 +46,11 @@ =20 print("\nChecking all commits since %s...\n" % ancestor, flush=3DTrue) =20 -ret =3D subprocess.run(["scripts/checkpatch.pl", "--terse", ancestor + "..= ."]) +# We don't want "noise" for clean patches, but do want to see +# the full commit hash for each violation, along with the +# offending patch content +ret =3D subprocess.run(["scripts/checkpatch.pl", "--emacs", "--quiet", + ancestor + "..."]) =20 if ret.returncode !=3D 0: print(" =E2=9D=8C FAIL one or more commits failed scripts/checkpatc= h.pl") --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538078; cv=none; d=zohomail.com; s=zohoarc; b=TM77qdDzI+l7DacCHeM7Bhb/JWOlTOsQsp7zriM4VMKbqlDTNjrQleg8vbpfMYPPm8FNWDHYqnbfGo2ulAmznriT8dxD29BRZ2hkblUsUr0pmkb5RzDj2vsJSbjD2B21askL0qNTdJsqHRyqKAm8vbf6qofP/E6YlE/1ic9gIcs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538078; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1MdCL1TeiuZniAF4dAeTTEQaZ/1x7FpNm3vwXD/CmyM=; b=XoA0MKFj6qPLngSbFUisylNdfGMztBSHadLPLOYqcCQjplZRCb/+uc4RIdvn22j5bFD69aaX/dFtbGPo+qM20hUGNiOBZrx8e1S6eS9tcw5HWne9kmlcMQUj4pAjZxqo9sAy70fIN3REyn5Ogj2zm8w9UU6jkh17oV3vStxy0fM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538078461447.5365928854038; Fri, 4 Sep 2026 09:07:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WRw-0004YR-Ck; Fri, 04 Sep 2026 12:07:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRq-0004EG-0g for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRo-0006hm-7Q for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:25 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-590-M7P6rtFzNkOy0_LyYzWerg-1; Fri, 04 Sep 2026 12:07:17 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 96F7319091DD; Fri, 4 Sep 2026 16:07:16 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EF8D43001D37; Fri, 4 Sep 2026 16:07:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538039; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1MdCL1TeiuZniAF4dAeTTEQaZ/1x7FpNm3vwXD/CmyM=; b=BEsH8v9th/bBj/kxEXyzr/tX7GT1E/cM+peIP7x9JE38q073GbuB+c42nlq8nAliWvixnB vgEmGw01uFyTNIUH7hULBRMdtgvMLfAVqnK9sjTZEuE+iNuJKTcv8W5W2hfPHzrJC3DWU2 XBSSbSW2rMfGGD22T9rzBzNq7aY7F0s= X-MC-Unique: M7P6rtFzNkOy0_LyYzWerg-1 X-Mimecast-MFC-AGG-ID: M7P6rtFzNkOy0_LyYzWerg_1788538036 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier Subject: [PULL v2 12/13] configure: correctly honour --disable-containers Date: Fri, 4 Sep 2026 17:06:42 +0100 Message-ID: <20260904160643.353833-13-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538082540154100 The configure script originally only probed for 'runc' command in order to handle cross-compilation containers. The Makefile under tests/docker would then probe again when used. In order to eliminate the additional probeing, we changed configure in commit c4ce04cfb7460d46c0262d437a7f35bb5c5fc449 to always probe for 'runc', so the result could be passed along to tests/docker make rules. That commit overlooked that the 'probe_target_compiler' func was relying on '$runc' =3D=3D 'no' as a proxy for the state of the --disable-containers arg. When we started unconditionally probing, that short cut no longer works and we must explicitly check "$use_containers" too. Fixes: c4ce04cfb7460d46c0262d437a7f35bb5c5fc449 Reported-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e Signed-off-by: Daniel P. Berrang=C3=A9 --- configure | 1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index 46cbcc085b..d3ad7d4062 100755 --- a/configure +++ b/configure @@ -1414,6 +1414,7 @@ probe_target_compiler() { esac =20 for host in $container_hosts; do + test "$use_containers" =3D "yes" || continue test "$container_command" !=3D "" || continue test "$host" =3D "$cpu" || continue case $target_arch in --=20 2.55.0 From nobody Mon Sep 14 04:50:53 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1788538104; cv=none; d=zohomail.com; s=zohoarc; b=n/jfQnz4WRbBSuCvsFReKEOo2t8zipdyCLgvV/MYmG1IuPDPlzdeagDVbWWx9beemuMhYhLC0o6Dy05GBsQnr8Fbml3aSzNV5S+cSjPVvo0lEcPkoWX+MWl/D0rPQjFX2adf3BCqEwxWHweEvgRndyO+QOYXobLypVFxquPlGu0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788538104; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FljOUZcrDxLcSEtdGZg2L7bnzs/rlfsiHLxsLO2MQAk=; b=ZR1DhFnAubYZMCofEA6f1mFV9TbecMMdH2f3yQHvffCoSgTSYIpflGPBULZoR+sqZBVcpuQ5TA8YBqrQHOIFAQqUHfhiyBBTkZqF5dsGd9aMnvhfvYZSJazuotfXvXFNcdKTi3g9HPvC/QkWt2lxKtf5QsobD7UvMAsfRRRu1uM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788538104196472.8886125381697; Fri, 4 Sep 2026 09:08:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x2WSS-00057n-6f; Fri, 04 Sep 2026 12:08:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRq-0004Eh-1R for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x2WRo-0006i2-89 for qemu-devel@nongnu.org; Fri, 04 Sep 2026 12:07:25 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-437-Wp5P18CRPfyUUSV6BZpvcQ-1; Fri, 04 Sep 2026 12:07:19 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9AD4D1888F2E; Fri, 4 Sep 2026 16:07:18 +0000 (UTC) Received: from berrange.csb (headnet05.pony-001.prod.iad2.dc.redhat.com [10.2.32.117]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E9A693001D37; Fri, 4 Sep 2026 16:07:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788538042; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FljOUZcrDxLcSEtdGZg2L7bnzs/rlfsiHLxsLO2MQAk=; b=jAl5kdoaUB0wBen+fe2YWpi5XgFZ/WNNB2cUUojSBeuRXQNSX6+Anw7ns0DGsiVgHLzAqH zMe0sC8KkyODO/1Fh0G0cfUihq+DNDomJ7DkIVsyiZDkw3JhIo6ImXQXhCZtu7v/6CvSCy nRmvLZnXsJMZS71mpA6rI/kDnZ7i8gI= X-MC-Unique: Wp5P18CRPfyUUSV6BZpvcQ-1 X-Mimecast-MFC-AGG-ID: Wp5P18CRPfyUUSV6BZpvcQ_1788538038 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Paolo Bonzini , devel@lists.libvirt.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Pierrick Bouvier Subject: [PULL v2 13/13] docs/system/security: exclude uninitialized stack variables as bugs Date: Fri, 4 Sep 2026 17:06:43 +0100 Message-ID: <20260904160643.353833-14-berrange@redhat.com> In-Reply-To: <20260904160643.353833-1-berrange@redhat.com> References: <20260904160643.353833-1-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1788538106940154100 The -ftrivial-auto-var-init=3Dzero usage guarantees implicit zero initializers for all stack variables. Thus most bug reports relying on undefined behaviour from lack of variable initialization will not be security issues, or even bugs. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Daniel P. Berrang=C3=A9 --- docs/system/security.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/system/security.rst b/docs/system/security.rst index af626a4230..8c42d1a6d8 100644 --- a/docs/system/security.rst +++ b/docs/system/security.rst @@ -143,6 +143,16 @@ an issue as a normal bug. which case plain manipulation of the stream is not considered as an attack vector. =20 +* **uninitialized stack variables**. If the bug scenario relies on + undefined behaviour from stack variables that lack explicit + initialization, it will not usually be considered a security flaw. + The build system adds '-ftrivial-auto-var-init=3Dzero', which is + available in both the supported compilers (GCC and CLang) and + ensures all stack variables have implicit zero-initializers. + This eliminates undefined behaviour and usually gives the + correct desired initialization value, eliminating most of the + bug scenarios wrt uninitialized stack variables. + * **low severity impact**. As a catch all rule, issues which are judged to have a "low" severity impact on the system will usually not justify handling as security bugs, nor assignment --=20 2.55.0