From nobody Sun Feb 8 23:57:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; 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 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1727703130316504.5071030760066; Mon, 30 Sep 2024 06:32:10 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 058ED14EC; Mon, 30 Sep 2024 09:32:08 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 8789A1467; Mon, 30 Sep 2024 09:30:03 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 1308A12E1; Mon, 30 Sep 2024 09:29:58 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 288D412E1 for ; Mon, 30 Sep 2024 09:29:46 -0400 (EDT) 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-177-H7IBBfLKOX6pTY3LmYWqrg-1; Mon, 30 Sep 2024 09:29:44 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (unknown [10.30.177.12]) (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 B9E65190DE24 for ; Mon, 30 Sep 2024 13:29:43 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.45.242.12]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id F357219541A0 for ; Mon, 30 Sep 2024 13:29:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1727702985; 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=lNCnnEZr8z2I6WyMDOGOm45Wv5rgFXvA4IcLM4NgDns=; b=N6yMv/jz8egLlDZDVawHbZGZAgTWy05f7Coqq6R/9vVAAgsx3I9xvzVKUMSLHPVJ05nA+t ogbJBWDy3o6Pu3UV5Rcj4GH+WS1mm7/s1RY3kjZWOPVl0a369GNayKQITr3+OGFHgP0iop kI2wxOoalzLi9rjVGHhPJ6CFFYIdfbg= X-MC-Unique: H7IBBfLKOX6pTY3LmYWqrg-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 05/13] virTypedParamsGetStringList: Ensure that returned array is NULL if there are no matching fields Date: Mon, 30 Sep 2024 15:29:27 +0200 Message-ID: <97fad66240cd390ac7b602bafd7d28b457f87488.1727702835.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: O2ZFG6ZQFJJWBV4DZ2QTH7IWWDXBZ2FY X-Message-ID-Hash: O2ZFG6ZQFJJWBV4DZ2QTH7IWWDXBZ2FY X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1727703130979116600 Content-Type: text/plain; charset="utf-8" 'virTypedParamsGetStringList' fills the returned array only with string parameters with matching name. The filtering code though leaves the possibility that all items are filtered out but the return array is still (over)allocated. Since 'virTypedParamsFilter()' now also allows filtering by type we can move the filtering there ensuring that we always allocate the right number of elements and more importantly the returned array will be NULL if none elements are present. Rework the code and adjust docs. Signed-off-by: Peter Krempa --- src/util/virtypedparam.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c index a080d7ba0f..564cb81acc 100644 --- a/src/util/virtypedparam.c +++ b/src/util/virtypedparam.c @@ -439,7 +439,8 @@ virTypedParamsFilter(virTypedParameterPtr params, * @values: array of returned values * * Finds all parameters with desired @name within @params and - * store their values into @values. + * store their values into @values. If none of the @params are strings nam= ed + * @name the returned @values will be NULL. * * Important: The strings in the returned string list @values are borrowed= from * @params and thus caller must free only the pointer returned as @values,= but @@ -454,13 +455,12 @@ virTypedParamsGetStringList(virTypedParameterPtr para= ms, const char ***values) { size_t i; - size_t n =3D 0; size_t nfiltered; g_autofree virTypedParameterPtr *filtered =3D NULL; *values =3D NULL; - nfiltered =3D virTypedParamsFilter(params, nparams, name, 0, &filtered= ); + nfiltered =3D virTypedParamsFilter(params, nparams, name, VIR_TYPED_PA= RAM_STRING, &filtered); if (nfiltered =3D=3D 0) return 0; @@ -468,11 +468,10 @@ virTypedParamsGetStringList(virTypedParameterPtr para= ms, *values =3D g_new0(const char *, nfiltered); for (i =3D 0; i < nfiltered; i++) { - if (filtered[i]->type =3D=3D VIR_TYPED_PARAM_STRING) - (*values)[n++] =3D filtered[i]->value.s; + (*values)[i] =3D filtered[i]->value.s; } - return n; + return nfiltered; } --=20 2.46.0