Subject: [bug#76819] [PATCH v7 17/35] gnu: tinyxml: Fix CVE-2023-34194.

From: Nicolas Graves <[email-masked]>
Date: Fri, 7 Mar 2025 19:38:46 +0100

* gnu/packages/patches/tinyxml-CVE-2023-34194.patch: Add patch.
* gnu/packages/xml.scm, gnu/local.mk: Record it.
---
 gnu/local.mk                                  |  1 +
 .../patches/tinyxml-CVE-2023-34194.patch      | 28 +++++++++++++++++++
 gnu/packages/xml.scm                          |  3 +-
 3 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/tinyxml-CVE-2023-34194.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 997b7344ff..2d602e0708 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2311,6 +2311,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tidy-CVE-2015-5522+5523.patch		\
   %D%/packages/patches/timewarrior-time-sensitive-tests.patch	\
   %D%/packages/patches/tinydir-fix-cbehave-test.patch		\
+  %D%/packages/patches/tinyxml-CVE-2023-34194.patch		\
   %D%/packages/patches/tinyxml-use-stl.patch			\
   %D%/packages/patches/tk-find-library.patch			\
   %D%/packages/patches/tla2tools-build-xml.patch		\
diff --git a/gnu/packages/patches/tinyxml-CVE-2023-34194.patch b/gnu/packages/patches/tinyxml-CVE-2023-34194.patch
new file mode 100644
index 0000000000..dee0aa1d93
--- /dev/null
+++ b/gnu/packages/patches/tinyxml-CVE-2023-34194.patch
@@ -0,0 +1,28 @@
+From: Guilhem Moulin <[email-masked]>
+Date: Sat, 30 Dec 2023 14:15:54 +0100
+Subject: Avoid reachable assertion via crafted XML document with a '\0'
+ located after whitespace
+
+Bug: https://www.forescout.com/resources/sierra21-vulnerabilities
+Bug-Debian: https://bugs.debian.org/1059315
+Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-34194
+Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2023-40462
+---
+ tinyxmlparser.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/tinyxmlparser.cpp b/tinyxmlparser.cpp
+index 8aa0dfa..1601962 100644
+--- a/tinyxmlparser.cpp
++++ b/tinyxmlparser.cpp
+@@ -1606,6 +1606,10 @@ const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXm
+ 		}
+ 
+ 		p = SkipWhiteSpace( p, _encoding );
++		if ( !p || !*p )
++		{
++			break;
++		}
+ 		if ( StringEqual( p, "version", true, _encoding ) )
+ 		{
+ 			TiXmlAttribute attrib;
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 10cd6d98fa..2ae9209f75 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1288,7 +1288,8 @@ (define-public tinyxml
               (sha256
                (base32
                 "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m"))
-              (patches (search-patches "tinyxml-use-stl.patch"))))
+              (patches (search-patches "tinyxml-use-stl.patch"
+                                       "tinyxml-CVE-2023-34194.patch"))))
     (build-system gnu-build-system)
     ;; This library is missing *a lot* of the steps to make it usable, so we
     ;; have to add them here, like every other distro must do.
-- 
2.48.1