fix(f43): fix incompatibility with expat

- Fixes rhbz#2370942

Thanks Théodore Papadopoulo for the report and link to the patch.
This commit is contained in:
Ankur Sinha (Ankur Sinha Gmail) 2026-06-09 12:13:18 +01:00
commit 6314354fa2
No known key found for this signature in database
GPG key ID: F8D8C0BEBAC898BD
2 changed files with 74 additions and 0 deletions

View file

@ -0,0 +1,70 @@
From db8f9efca220c9d16a30958e179abae3379d0011 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <ben.boeckel@kitware.com>
Date: Mon, 15 Apr 2024 22:22:22 -0400
Subject: [PATCH] vtkXMLDataParser: track `AppendedData` state explicitly
Newer `libexpat` doesn't like being given the appended data after the
artificially ended document anymore. Avoid pushing it through to its
parser.
Fixes: #19258
---
IO/XMLParser/vtkXMLDataParser.cxx | 6 +++++-
IO/XMLParser/vtkXMLDataParser.h | 3 +++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/IO/XMLParser/vtkXMLDataParser.cxx b/IO/XMLParser/vtkXMLDataParser.cxx
index 1f6006d37c2..7d38092fdd7 100644
--- a/IO/XMLParser/vtkXMLDataParser.cxx
+++ b/IO/XMLParser/vtkXMLDataParser.cxx
@@ -36,6 +36,7 @@ vtkXMLDataParser::vtkXMLDataParser()
this->RootElement = nullptr;
this->AppendedDataPosition = 0;
this->AppendedDataMatched = 0;
+ this->AppendedDataFound = false;
this->DataStream = nullptr;
this->InlineDataStream = vtkBase64InputStream::New();
this->AppendedDataStream = vtkBase64InputStream::New();
@@ -88,6 +89,7 @@ void vtkXMLDataParser::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
os << indent << "AppendedDataPosition: " << this->AppendedDataPosition << "\n";
+ os << indent << "AppendedDataFound: " << this->AppendedDataFound << "\n";
if (this->RootElement)
{
this->RootElement->PrintXML(os, indent);
@@ -214,7 +216,7 @@ int vtkXMLDataParser::ParsingComplete()
// If we have reached the appended data section, we stop parsing.
// This prevents the XML parser from having to walk over the entire
// appended data section.
- if (this->AppendedDataPosition)
+ if (this->AppendedDataPosition || this->AppendedDataFound)
{
return 1;
}
@@ -433,6 +435,8 @@ int vtkXMLDataParser::ParseBuffer(const char* buffer, unsigned int count)
{
return 0;
}
+
+ this->AppendedDataFound = true;
}
return 1;
diff --git a/IO/XMLParser/vtkXMLDataParser.h b/IO/XMLParser/vtkXMLDataParser.h
index 1504a4d400b..142bf28327d 100644
--- a/IO/XMLParser/vtkXMLDataParser.h
+++ b/IO/XMLParser/vtkXMLDataParser.h
@@ -204,6 +204,9 @@ protected:
// How much of the string "<AppendedData" has been matched in input.
int AppendedDataMatched;
+ // Whether AppendedData has been dealt with or not.
+ bool AppendedDataFound;
+
// The byte order of the binary input.
int ByteOrder;
--
GitLab

View file

@ -74,6 +74,10 @@ Patch3: vtk-python3.13.patch
Patch4: vtk-build.patch
# Fix Integer Overflow on 32-bit in KissFFT
Patch5: vtk-CVE-2025-34297.patch
# Fix expat incompatibility
# https://bugzilla.redhat.com/show_bug.cgi?id=2370942
# https://gitlab.kitware.com/vtk/vtk/-/commit/db8f9efca220c9d16a30958e179abae3379d0011
Patch6: db8f9efca220c9d16a30958e179abae3379d0011.patch
URL: https://vtk.org/