On Fri, Jul 10, 2026 at 07:07:01AM -0400, Michael Bommarito wrote:
> Add negative tests that feed XML numeric character references for LF
> ( ) and CR ( ) into the DNS TXT value and SRV domain/target
> attributes, covering both the network XML parse path and the update
> API. Literal newlines are insufficient because XML parsers normalize
> raw attribute whitespace to spaces; the numeric references are what
> survive to the configuration emitter.
>
> CVE-2026-61477
>
> Signed-off-by: Michael Bommarito <[email protected]>
> ---
> .../dns-txt-record-newline.xml | 1 +
> .../srv-record-target-newline.xml | 1 +
> tests/networkxml2xmlupdatetest.c | 12 ++++++++++++
> .../nat-network-dns-srv-record-domain-newline.xml | 14 ++++++++++++++
> .../nat-network-dns-srv-record-target-newline.xml | 14 ++++++++++++++
> .../nat-network-dns-txt-record-newline.xml | 14 ++++++++++++++
> tests/networkxmlconftest.c | 3 +++
> 7 files changed, 59 insertions(+)
> create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-newline.xml
> create mode 100644 tests/networkxml2xmlupdatein/srv-record-target-newline.xml
> create mode 100644
> tests/networkxmlconfdata/nat-network-dns-srv-record-domain-newline.xml
> create mode 100644
> tests/networkxmlconfdata/nat-network-dns-srv-record-target-newline.xml
> create mode 100644
> tests/networkxmlconfdata/nat-network-dns-txt-record-newline.xml
This tripped up the RNG schema validation, since we have
intentionally malformed XML documents. I'm adding:
diff --git a/tests/virschematest.c b/tests/virschematest.c
index 4faac8d976..42b1a62715 100644
--- a/tests/virschematest.c
+++ b/tests/virschematest.c
@@ -301,9 +301,17 @@ static const struct testSchemaEntry schemaInterface[] = {
{ .dir = "tests/interfaceschemadata" },
};
+/* skip tests with completely broken XML */
+static const char *skip_networkxmlconfdata[] = {
+ "nat-network-dns-srv-record-domain-newline.xml",
+ "nat-network-dns-srv-record-target-newline.xml",
+ "nat-network-dns-txt-recor-record-newline.xml",
+};
+
static const struct testSchemaEntry schemaNetwork[] = {
{ .dir = "src/network" },
- { .dir = "tests/networkxmlconfdata" },
+ { .dir = "tests/networkxmlconfdata",
+ .skip = skip_networkxmlconfdata },
{ .dir = "examples/xml/test/",
.dirRegex = "testnet.*" },
{ .dir = "tests/networkxml2xmlupdateout" },
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|