From nobody Sun Feb 8 19:55:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1629737507; cv=none; d=zohomail.com; s=zohoarc; b=kju1Ig2kbbMkLdNh7Rx634f0X48cySPBA1tCjNEFG2qwn/QnqsRxHgR0rv/9T2CS1l/jB7yp7Pyl02VeQB6EEzl+9ncxqhUuI7/TwpEMBfOUUt1XYWEm03+oRGebhLib3EH+101gWH5Bd0sYp+jt41wkfegR2PAQGyoX8xyzCWY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629737507; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+P2LuxmCFfnsG1soJU1Cg2g+RhorGvDR1WqvsBFpz54=; b=Aw1dQNZDrh+pNmmtSu+PR4TZOd5qa2rGMXLGCYulX2ml4H2WeVQKEuSYohaq2+CN0XGvFiLZR3AhJHtM+MFqZS4CaTTj0bFaCgbHzB18SHYPHMtmvyScdg6oLcnJivIaCj5TSkTc5kPuNCjTd6bc3yLHT7j7vmznRvq6xDaDt7U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1629737507794395.08600878294635; Mon, 23 Aug 2021 09:51:47 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-331-kvLWlDapMZeRUOjo4ZLV5w-1; Mon, 23 Aug 2021 12:51:44 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 94D8A87D541; Mon, 23 Aug 2021 16:51:37 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C2FC35D6AB; Mon, 23 Aug 2021 16:51:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 0A1DF4BB7C; Mon, 23 Aug 2021 16:51:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 17NGoXU4031662 for ; Mon, 23 Aug 2021 12:50:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id E06D210372E4; Mon, 23 Aug 2021 16:50:33 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.43.2.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6A61510372D5 for ; Mon, 23 Aug 2021 16:50:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629737506; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+P2LuxmCFfnsG1soJU1Cg2g+RhorGvDR1WqvsBFpz54=; b=fLrRzuiWl8z3eOq/lsJcj1vUYsbZUZmzk5+Fe58s3biZ7oF/tQ7c5impQIzezw0iJS9e4B XEI0+FesTgfgCs2QofKoyNnUQihhOZCpw+scLJekkMj1OCI7+TCmFjh0HCFMaWI4RBazv/ M6i1YGxnp3rJnhTYlU/32XlnDpFY6CQ= X-MC-Unique: kvLWlDapMZeRUOjo4ZLV5w-1 From: Kristina Hanicova To: libvir-list@redhat.com Subject: [PATCH 5/7] src & network_conf: add validation against schema in define Date: Mon, 23 Aug 2021 18:50:12 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1629737508289100001 Content-Type: text/plain; charset="utf-8" This patch also includes propagation of flags into the virNetworkDefParse(). Signed-off-by: Kristina Hanicova --- src/conf/domain_conf.c | 2 +- src/conf/network_conf.c | 15 +++++++++------ src/conf/network_conf.h | 3 ++- src/esx/esx_network_driver.c | 2 +- src/network/bridge_driver.c | 4 ++-- src/qemu/qemu_process.c | 2 +- src/test/test_driver.c | 4 ++-- src/vbox/vbox_network.c | 2 +- 8 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 10effdce69..0328447f87 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30522,7 +30522,7 @@ virDomainNetResolveActualType(virDomainNetDef *ifac= e) if (!(xml =3D virNetworkGetXMLDesc(net, 0))) goto cleanup; =20 - if (!(def =3D virNetworkDefParseString(xml, NULL))) + if (!(def =3D virNetworkDefParseString(xml, NULL, 0))) goto cleanup; =20 switch ((virNetworkForwardType) def->forward.type) { diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index fbd939a1f1..f23599abac 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -318,7 +318,7 @@ virNetworkDefCopy(virNetworkDef *def, if (!(xml =3D virNetworkDefFormat(def, xmlopt, flags))) return NULL; =20 - return virNetworkDefParseString(xml, xmlopt); + return virNetworkDefParseString(xml, xmlopt, 0); } =20 =20 @@ -2085,13 +2085,15 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt, static virNetworkDef * virNetworkDefParse(const char *xmlStr, const char *filename, - virNetworkXMLOption *xmlopt) + virNetworkXMLOption *xmlopt, + unsigned int flags) { g_autoptr(xmlDoc) xml =3D NULL; virNetworkDef *def =3D NULL; int keepBlanksDefault =3D xmlKeepBlanksDefault(0); =20 - if ((xml =3D virXMLParse(filename, xmlStr, _("(network_definition)"), = NULL, false))) + if ((xml =3D virXMLParse(filename, xmlStr, _("(network_definition)"), + "network.rng", flags & VIR_NETWORK_DEFINE_VALID= ATE))) def =3D virNetworkDefParseNode(xml, xmlDocGetRootElement(xml), xml= opt); =20 xmlKeepBlanksDefault(keepBlanksDefault); @@ -2101,9 +2103,10 @@ virNetworkDefParse(const char *xmlStr, =20 virNetworkDef * virNetworkDefParseString(const char *xmlStr, - virNetworkXMLOption *xmlopt) + virNetworkXMLOption *xmlopt, + unsigned int flags) { - return virNetworkDefParse(xmlStr, NULL, xmlopt); + return virNetworkDefParse(xmlStr, NULL, xmlopt, flags); } =20 =20 @@ -2111,7 +2114,7 @@ virNetworkDef * virNetworkDefParseFile(const char *filename, virNetworkXMLOption *xmlopt) { - return virNetworkDefParse(NULL, filename, xmlopt); + return virNetworkDefParse(NULL, filename, xmlopt, 0); } =20 =20 diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 6199f3f588..34007e1969 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -327,7 +327,8 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt, =20 virNetworkDef * virNetworkDefParseString(const char *xmlStr, - virNetworkXMLOption *xmlopt); + virNetworkXMLOption *xmlopt, + unsigned int flags); =20 virNetworkDef * virNetworkDefParseFile(const char *filename, diff --git a/src/esx/esx_network_driver.c b/src/esx/esx_network_driver.c index 72b5a4f235..8a0cfa3729 100644 --- a/src/esx/esx_network_driver.c +++ b/src/esx/esx_network_driver.c @@ -298,7 +298,7 @@ esxNetworkDefineXMLFlags(virConnectPtr conn, const char= *xml, return NULL; =20 /* Parse network XML */ - def =3D virNetworkDefParseString(xml, NULL); + def =3D virNetworkDefParseString(xml, NULL, 0); =20 if (!def) return NULL; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 0f27b1d180..207163cde2 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -3474,7 +3474,7 @@ networkCreateXML(virConnectPtr conn, virNetworkPtr net =3D NULL; virObjectEvent *event =3D NULL; =20 - if (!(newDef =3D virNetworkDefParseString(xml, network_driver->xmlopt)= )) + if (!(newDef =3D virNetworkDefParseString(xml, network_driver->xmlopt,= 0))) goto cleanup; =20 if (virNetworkCreateXMLEnsureACL(conn, newDef) < 0) @@ -3529,7 +3529,7 @@ networkDefineXMLFlags(virConnectPtr conn, =20 virCheckFlags(0, NULL); =20 - if (!(def =3D virNetworkDefParseString(xml, network_driver->xmlopt))) + if (!(def =3D virNetworkDefParseString(xml, network_driver->xmlopt, 0)= )) goto cleanup; =20 if (virNetworkDefineXMLFlagsEnsureACL(conn, def) < 0) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 77da9992f4..df3bd66c0c 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4784,7 +4784,7 @@ qemuProcessGetNetworkAddress(const char *netname, if (!xml) goto cleanup; =20 - netdef =3D virNetworkDefParseString(xml, NULL); + netdef =3D virNetworkDefParseString(xml, NULL, 0); if (!netdef) goto cleanup; =20 diff --git a/src/test/test_driver.c b/src/test/test_driver.c index d9203c9568..117d1e6ba9 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -5581,7 +5581,7 @@ testNetworkCreateXML(virConnectPtr conn, const char *= xml) virNetworkPtr net =3D NULL; virObjectEvent *event =3D NULL; =20 - if ((newDef =3D virNetworkDefParseString(xml, NULL)) =3D=3D NULL) + if ((newDef =3D virNetworkDefParseString(xml, NULL, 0)) =3D=3D NULL) goto cleanup; =20 if (!(obj =3D virNetworkObjAssignDef(privconn->networks, newDef, @@ -5620,7 +5620,7 @@ testNetworkDefineXMLFlags(virConnectPtr conn, =20 virCheckFlags(0, NULL); =20 - if ((newDef =3D virNetworkDefParseString(xml, NULL)) =3D=3D NULL) + if ((newDef =3D virNetworkDefParseString(xml, NULL, 0)) =3D=3D NULL) goto cleanup; =20 if (!(obj =3D virNetworkObjAssignDef(privconn->networks, newDef, 0))) diff --git a/src/vbox/vbox_network.c b/src/vbox/vbox_network.c index cce43ee5af..804f9f0b01 100644 --- a/src/vbox/vbox_network.c +++ b/src/vbox/vbox_network.c @@ -397,7 +397,7 @@ vboxNetworkDefineCreateXML(virConnectPtr conn, const ch= ar *xml, bool start, =20 VBOX_IID_INITIALIZE(&vboxnetiid); =20 - if (!(def =3D virNetworkDefParseString(xml, NULL)) || + if (!(def =3D virNetworkDefParseString(xml, NULL, 0)) || (def->forward.type !=3D VIR_NETWORK_FORWARD_NONE) || (def->nips =3D=3D 0 || !def->ips)) goto cleanup; --=20 2.31.1