new file mode 100644
@@ -0,0 +1,53 @@
+From 6261b1ca983717c71a9c0409ff045ee9c81ff3b6 Mon Sep 17 00:00:00 2001
+From: mohammadmseet-hue <mohammadmseet@gmail.com>
+Date: Thu, 16 Apr 2026 02:54:24 +0200
+Subject: [PATCH 2/6] fix: add overflow checks to xmlDictAddQString in dict.c
+
+xmlDictAddString has overflow guards for pool size calculations, but its
+sibling xmlDictAddQString lacks these entirely. The namelen + plen + 1
+addition can overflow unsigned int, and 4 * (overflowed_value) produces
+a small allocation, leading to heap buffer overflow when memcpy writes
+the prefix and name.
+
+Add the same SIZE_MAX-based overflow guards and safe size_t cast.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/a4cba4b5b5a8c42e155ed42d2d2a44955465a2e4]
+CVE: CVE-2026-86138
+Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
+---
+ dict.c | 19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/dict.c b/dict.c
+index d7156ed..ae0210e 100644
+--- a/dict.c
++++ b/dict.c
+@@ -225,10 +225,21 @@ xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen,
+ return(NULL);
+ }
+
+- if (size == 0) size = 1000;
+- else size *= 4; /* exponential growth */
+- if (size < 4 * (namelen + plen + 1))
+- size = 4 * (namelen + plen + 1); /* just in case ! */
++ if (size == 0) {
++ size = 1000;
++ } else {
++ if (size < (SIZE_MAX - sizeof(xmlDictStrings)) / 4)
++ size *= 4; /* exponential growth */
++ else
++ size = SIZE_MAX - sizeof(xmlDictStrings);
++ }
++ if (size / 4 < namelen + plen + 1) {
++ if ((size_t) namelen + plen + 1 <
++ (SIZE_MAX - sizeof(xmlDictStrings)) / 4)
++ size = 4 * ((size_t) namelen + plen + 1); /* just in case ! */
++ else
++ return(NULL);
++ }
+ pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size);
+ if (pool == NULL)
+ return(NULL);
+--
+2.34.1
+
@@ -33,6 +33,7 @@ SRC_URI += "http://www.w3.org/XML/Test/xmlts20130923.tar;subdir=${BP};name=testt
file://CVE-2026-1757.patch \
file://CVE-2026-11979.patch \
file://CVE-2026-86137.patch \
+ file://CVE-2026-86138.patch \
"
SRC_URI[archive.sha256sum] = "c3d8c0c34aa39098f66576fe51969db12a5100b956233dc56506f7a8679be995"