From nobody Thu Nov 12 15:08:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1793025094; cv=none; d=zohomail.com; s=zohoarc; b=SzgGmDfWkLoQZ7+vYc6UGVs+GYr7BlSoqJflhQcXDiibOwd/81cbk5J9/qRImfmKDsVe+L9Xv7TJi8SRI7vbjLAliBapI01OtyCjx5xXtMabFuwAqRhIS42QhBKlYKd6VNf2a4xVb19Qg4cMz3NeElpVqO+NMw6iw6CE2yzDegg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1793025094; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:Subject:Subject:To:To:Message-Id:Cc; bh=U5uLI+kAM3NGgEYj/iejBK1jERSekHK2GUSbZHpkLO0=; b=Og7qt8NV7FqYTa3aOZmC6RCo8UQw/xHtlrupZaY4k4CtCveT+346KfUtzPynwaeuBri3YkDgymg4EFJkifByKDtcy+UYVOA5DRfAC/n2KXJJNsych/6rEHXp/gRnenwby5Zh6bfs0UXh/oRxC4OfKsJYBIbqJu6rycjPZ4rAqTk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1793025094289696.3840495274294; Mon, 26 Oct 2026 07:31:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9C5A041B48; Mon, 26 Oct 2026 10:31:32 -0400 (EDT) Received: from [172.19.199.19] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 40C1141BDD; Mon, 26 Oct 2026 10:30:37 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A29F041973; Mon, 26 Oct 2026 10:30:29 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 7773D418FC for ; Mon, 26 Oct 2026 10:30:28 -0400 (EDT) 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-578-kPUYQRs4PAavolRpTrXJ9w-1; Mon, 26 Oct 2026 10:30:26 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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 E734518000A3 for ; Mon, 26 Oct 2026 14:30:25 +0000 (UTC) Received: from mprivozn-thinkpadt14gen4.tpbc.csb (unknown [10.43.3.180]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5600B1800347 for ; Mon, 26 Oct 2026 14:30:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1793025028; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=U5uLI+kAM3NGgEYj/iejBK1jERSekHK2GUSbZHpkLO0=; b=bXBwXOr7keu4iHvfrYmX+97Zp+/srjIoNS31cl4ISHDlgfEiDJF1FPbhSIAT4LYy6rtItp piWf+FcmuFgWaPoi71MmhOCgz8/NxTWegVJ+9+OvR8xAQMxMW94ZkpE2SeDyClHwQi9jtH eLPgONYM/OB0/nUigecNSE/Az0ekXjY= X-MC-Unique: kPUYQRs4PAavolRpTrXJ9w-1 X-Mimecast-MFC-AGG-ID: kPUYQRs4PAavolRpTrXJ9w_1793025026 To: devel@lists.libvirt.org Subject: [PATCH 1/2] utiltest: Add MultiplyAddIsOverflow test case Date: Mon, 26 Oct 2026 15:30:20 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: UEePfNyuJeLxhrVq1gSpFlQClzkUGGYJvwcCffu3Uuo_1793025026 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 567ELSQMPBISQ3OWBLUWDWJ6PQ43VUGJ X-Message-ID-Hash: 567ELSQMPBISQ3OWBLUWDWJ6PQ43VUGJ X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1793025099961158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik This is to make sure any future changes done to VIR_MULTIPLY_ADD_IS_OVERFLOW() macro don't break it. Signed-off-by: Michal Privoznik Reviewed-by: Jiri Denemark --- tests/utiltest.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/utiltest.c b/tests/utiltest.c index 0bef502a84..3d3e1a17ec 100644 --- a/tests/utiltest.c +++ b/tests/utiltest.c @@ -423,6 +423,39 @@ testGetSubIDs(const void *data G_GNUC_UNUSED) } =20 =20 +static int +testMultiplyAddIsOverflow(const void *data G_GNUC_UNUSED) +{ + unsigned long a =3D ULONG_MAX / 1024UL; + + if (VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX, a, 1024, 1023)) { + VIR_TEST_DEBUG("should not have failed (limit=3D%lu, value%lu, mul= tiply=3D1024, add=3D1023).", + ULONG_MAX, a); + return -1; + } + + if (!VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX, a, 1024, 1024)) { + VIR_TEST_DEBUG("should have failed (limit=3D%lu, value=3D%lu, mult= iply=3D1024, add=3D1024).", + ULONG_MAX, a); + return -1; + } + + if (VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX - 1022, a, 1024, 1)) { + VIR_TEST_DEBUG("should have failed (limit=3D%lu, value=3D%lu, mult= iply=3D1024, add=3D1).", + ULONG_MAX - 1022, a); + return -1; + } + + if (!VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX - 1023, a, 1024, 1)) { + VIR_TEST_DEBUG("should have failed (limit=3D%lu, value=3D%lu, mult= iply=3D1024, add=3D1).", + ULONG_MAX - 1023, a); + return -1; + } + + return 0; +} + + static int mymain(void) { @@ -447,6 +480,7 @@ mymain(void) DO_TEST(KernelCmdlineNextParam); DO_TEST(KernelCmdlineMatchParam); DO_TEST(GetSubIDs); + DO_TEST(MultiplyAddIsOverflow); =20 return result =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } --=20 2.56.0 From nobody Thu Nov 12 15:08:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1793025164; cv=none; d=zohomail.com; s=zohoarc; b=jKxCvcW4ABR9o/1gEJJD9y7LMXmy0o5eCcqt8/K+JX9/L1cLm1/5MU0y2MdBJwZDtQEJOyxD/1du4y13LbmHdNU8LaaIomzb0KBehddkS/39bb4dc89xgtfJQKSh8Hs3FYKqYBucnHKAhF103JvcY1kxat+LyqUwyOgDJw7NElY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1793025164; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:Subject:Subject:To:To:Message-Id:Cc; bh=7nMOMYeelUfOZPmbgQovto5gE20LJ3vJxt2tJWPcv1k=; b=W8sM5DJeEk89j+WdTZkgPEI/Q7i5IZzGWrlBmji/GB7KuZptpttAMgqta2ZbpV+gIab2+sg3DV9dsf/ja/B/17jm/jyYlzhtk/ynt55pAZl39wfDBlN99fDxbuYT+6XOGj03aYg4dhC7AiI3/UNFH2kE00jOiAflzxFoQXsGaqA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1793025163994339.04258517458993; Mon, 26 Oct 2026 07:32:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6F23141BCE; Mon, 26 Oct 2026 10:32:42 -0400 (EDT) Received: from [172.19.199.19] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 094B441AE0; Mon, 26 Oct 2026 10:30:41 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D21AC418FC; Mon, 26 Oct 2026 10:30:30 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 64FEF419FD for ; Mon, 26 Oct 2026 10:30:29 -0400 (EDT) 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-694-1pMfyYKEODKh2yTckyuY1g-1; Mon, 26 Oct 2026 10:30:27 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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 DB05618004A9 for ; Mon, 26 Oct 2026 14:30:26 +0000 (UTC) Received: from mprivozn-thinkpadt14gen4.tpbc.csb (unknown [10.43.3.180]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4A1121800347 for ; Mon, 26 Oct 2026 14:30:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1793025029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7nMOMYeelUfOZPmbgQovto5gE20LJ3vJxt2tJWPcv1k=; b=ItAaWROaAHFj4Wm8K4N5e5crS07vXJDeLBI516CxpfewnuvPXrAeLaLOHoVwj6fjwqf5Fj lMB/gHokjCVKkpK4uaP8EVbciT+xeUY3FYLdmTv2eMDQY01og7xj64s9h3S1mBYsole7xC Q90BxpuGai5uJPnEiaOnxARsX0Y46cY= X-MC-Unique: 1pMfyYKEODKh2yTckyuY1g-1 X-Mimecast-MFC-AGG-ID: 1pMfyYKEODKh2yTckyuY1g_1793025027 To: devel@lists.libvirt.org Subject: [PATCH 2/2] internal.h: Fix VIR_MULTIPLY_ADD_IS_OVERFLOW() macro when @add is zero Date: Mon, 26 Oct 2026 15:30:21 +0100 Message-ID: <137175d717ad67afe5a60896cc420d95c344ee91.1793024999.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: mGdytDv5M2IsznnJnwkMu_FcGCFKKtzaill66FD9Erk_1793025027 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OX5MQ4EGD3ZTLO4ANUWGZDCHWERYKCPC X-Message-ID-Hash: OX5MQ4EGD3ZTLO4ANUWGZDCHWERYKCPC X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1793025165606158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The aim of VIR_MULTIPLY_ADD_IS_OVERFLOW() macro is to check whether a multiplication and subsequent addition would overflow over given limit. For instance, if value * multiply + add would fit into say unsigned long. But because of the way the macro is written, a compiler warning may be thrown if 'add' is zero, i.e. we want to check just if value * multiply would overflow. Rewrite the offending part of the macro to make if work even in that case. Signed-off-by: Michal Privoznik Reviewed-by: Jiri Denemark --- src/internal.h | 2 +- tests/utiltest.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/internal.h b/src/internal.h index df311551a4..4ba42f330a 100644 --- a/src/internal.h +++ b/src/internal.h @@ -54,7 +54,7 @@ */ #define VIR_MULTIPLY_ADD_IS_OVERFLOW(limit, value, multiply, add) \ (G_UNLIKELY(((multiply) > 0 && (value) > (limit) / (multiply)) || \ - ((limit) - ((value) * (multiply)) < (add)))) + ((limit) - (add) < ((value) * (multiply))))) =20 /* The library itself is allowed to use deprecated functions / * variables, so effectively undefine the deprecated attribute diff --git a/tests/utiltest.c b/tests/utiltest.c index 3d3e1a17ec..24d175f67a 100644 --- a/tests/utiltest.c +++ b/tests/utiltest.c @@ -452,6 +452,12 @@ testMultiplyAddIsOverflow(const void *data G_GNUC_UNUS= ED) return -1; } =20 + if (VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX, a, 1024, 0)) { + VIR_TEST_DEBUG("should not have failed (limit=3D%lu, value=3D%lu, = multiply=3D1024, add=3D0).", + ULONG_MAX, a); + return -1; + } + return 0; } =20 --=20 2.56.0