Welcome To openEuler Community
Hey @markeryang , thanks for your contribution to the community.
Bot Usage Manual
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands. You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
Contact Guide
If you have any questions, please contact the SIG: Base-service ,
and any of the maintainers: @dillon_chen, @licihua, @overweight, @shenyangyang, @xujing99, @zhujianwei001 ,
and any of the committers: @hubin1305, @jiayi0118, @luckky7, @lvying6, @znzju .


/branches openEuler-24.03-LTS-SP1 /name markeryang /email 747675909@qq.com


【任务 #144 · openEuler-24.03-LTS-SP1】bundle CVE-2026-86142+CVE-2026-86143+CVE-2026-86144
本次为 bundle 任务,共涉及 3 个 CVE。三个修复补丁均已针对 openEuler-24.03-LTS-SP1 分支的 libxml2-2.11.9 源码基线完成适配(均无前置补丁),并统一通过同一个 PR 提交合并。以下按 CVE 分块说明。
─── CVE-2026-86142 ───
1. 是否受影响
- 结论:未知。影响性分析暂未得出明确结论,事实清单中无各分支受影响状态数据,故无法给出分支级判定。
2. 修复补丁
3. 补丁适配情况
- 存在适配:
[原补丁]backport-CVE-2026-86142.patch,状态 adapted,置信度 high;无前置补丁。 - 冲突原因:上游 hunk 目标位置为 master 版 xpointer.c:263,libxml2-2.11.9 中对应代码位于 xmlXPtrEvalXPtrPart 函数内(插入点 xpointer.c:970),直接 git apply 失败。两处不匹配:
- 尾随上下文不同:master 为
buffer = xmlMalloc(len),2.11.9 为buffer = (xmlChar *) xmlMallocAtomic(len); - 上游调用的单参
xmlXPathPErrMemory(ctxt)在 2.11.9 中不存在(xpath.c 内为 static 两参函数,无头文件声明,xpointer.c 无法调用)。
- 尾随上下文不同:master 为
- 适配内容:hunk 行号/上下文对齐 baseline(
@@ -968,6 +968,13 @@);错误报告调用替换为 xpointer.c 文件内等价 static 函数xmlXPtrErrMemory("reading XPointer part")(xpointer.c:80 定义,与同函数既有错误路径风格一致);核心溢出检查逻辑(len == 0 && ctxt->cur != NULL && *ctxt->cur != 0→ 报错 +xmlFree(name)+ return)与上游逐字节一致。 - 落地验证:适配补丁已应用到 source_dir(commit 701ab5c,父提交 baseline 4e9f5fd),git diff --stat 确认 baseline 变化:xpointer.c | 7 +++++++。
4. 是否提交 PR
─── CVE-2026-86143 ───
1. 是否受影响
- 结论:未知。影响性分析暂未得出明确结论,事实清单中无各分支受影响状态数据,故无法给出分支级判定。
2. 修复补丁
3. 补丁适配情况
- 存在适配:
[原补丁]backport-CVE-2026-86143.patch,状态 adapted,置信度 high;无前置补丁。 - 冲突原因:原补丁 2 个 hunk,hunk1(上游 xmlIO.c:2455,xmlOutputBufferWrite 内溢出检查插入)git apply --check 失败,master 与 2.11.9 存在三处差异:
- 函数位置:master 约 2455 行,2.11.9 中位于约 3296 行(签名
xmlOutputBufferWrite(xmlOutputBufferPtr out, int len, const char *buf)); - MINLEN 检查:master 为
if (nbchars < MINLEN) break;,2.11.9 为if ((nbchars < MINLEN) && (len <= 0)) goto done;; - master 为单一 writecallback 调用,2.11.9 存在 encoder/非 encoder 两个 writecallback 分支。
- 函数位置:master 约 2455 行,2.11.9 中位于约 3296 行(签名
- 适配内容:核心 4 行新增代码(
if (nbchars >= INT_MAX) { out->error = XML_ERR_INTERNAL_ERROR; return(-1); })逐字节保留;插入点选在语义等价位置——writecallback 调用之前、MINLEN/len 检查之后(xmlIO.c:3357,覆盖两个 writecallback 分支之前的公共前导);上下文行按 baseline 实际内容(含 tab 缩进)调整。hunk2(xmlOutputBufferFlush)direct apply check 通过,原样保留、核心行逐字节一致。 - 落地验证:补丁已 git apply 应用到 source_dir 并 commit(a5c2dba),git diff --stat 确认 xmlIO.c 19 行变更(17 insertions, 2 deletions)。
4. 是否提交 PR
─── CVE-2026-86144 ───
1. 是否受影响
- 结论:未知。影响性分析暂未得出明确结论,事实清单中无各分支受影响状态数据,故无法给出分支级判定。
2. 修复补丁
3. 补丁适配情况
- 存在适配:
[原补丁]backport-CVE-2026-86144.patch,状态 adapted,置信度 high;无前置补丁。 - 冲突原因:跨版本适配(上游 master ~2.15 → 2.11.9),原补丁 12 个 hunk 中 7 个原样应用、4 个需上下文/API 适配、1 个无挂点丢弃。主要适配点:
- xinclude.c xmlXIncludeLoadTxt:核心行
xmlCtxtUseOptions(pctxt, ctxt->parseFlags);插入点选在 2.11.9 的 xmlNewParserCtxt() 之后、xmlLoadExternalEntity() 之前(2.11.9 无 2.13+ 的 xmlCtxtSetResourceLoader/xmlLoadResource API,全树 grep 0 命中); - xinclude.c xmlXIncludeProcess/xmlXIncludeProcessTree:签名对齐 2.11.9 的 xmlDocPtr/xmlNodePtr(上游为 xmlDoc/xmlNode),核心变更行逐字节保真;
- runtest.c 新增 xincludeProcessTest:
xmlCtxtSetErrorHandler→xmlSetStructuredErrorFunc(2.13+ API 在 2.11.9 不存在);恢复 handler 处由xmlSetStructuredErrorFunc(NULL,NULL)改为xmlSetStructuredErrorFunc(NULL,testStructuredErrorHandler)(2.11.9 全局 handler 在 initializeLibxml2 安装一次,置 NULL 会使后续套件 .err 捕获失效,已实机验证); - 2 个 result .err 文件内容适配为 2.11.9 实际错误输出格式(
I/O error : Attempt to load network entity <url>); - 丢弃 xinclude.c @@-1419,7 errNo 排除报告块:2.11.9 的 LoadTxt 失败路径为裸 goto error(xinclude.c:1726-1728),该报告块不存在且无挂点,其修复意图(NONET 拒绝不重复报告)在 2.11.9 天然满足。
- xinclude.c xmlXIncludeLoadTxt:核心行
- 落地验证:补丁已 git apply 到 source_dir 并 commit(50f7acd),git diff --stat 确认 8 files changed, 101 insertions(+), 2 deletions(-);构建成功,./runtest issue1120 4/4 通过,全量 3628 tests 无错误。
4. 是否提交 PR
合并 PR(bundle 统一)
- openEuler-24.03-LTS-SP1:https://gitcode.com/src-openeuler/libxml2/merge_requests/440(已合并)


/branches openEuler-24.03-LTS-SP1 /name markeryang /email 747675909@qq.com


【任务 #144 · openEuler-24.03-LTS-SP1】bundle CVE-2026-86142+CVE-2026-86143+CVE-2026-86144
本次针对 libxml2 2.11.9(openEuler-24.03-LTS-SP1)的 3 个 CVE 完成源码影响性分析、补丁适配与 PR 提交,结果如下:
─── CVE-2026-86142 ───
受影响性:受影响
- openEuler-24.03-LTS-SP1 / 2.11.9 / 受影响
- 原因:CVE 点名的 xmlXPtrEvalXPtrPart(xpointer.c:953)存在 xpointer 长度饱和导致的堆缓冲区溢出:xpointer.c:970-972 处
len = xmlStrlen(ctxt->cur); len++; buffer = (xmlChar *) xmlMallocAtomic(len);无溢出检查,而 2.11.9 的 xmlStrlen(xmlstring.c:428-431)已含len > INT_MAX ? 0 : len饱和逻辑,>2GB 输入时 len=0 → 仅分配 1 字节 →*cur++ = CUR;循环堆溢出,修复尚未应用。
修复补丁:https://github.com/GNOME/libxml2/commit/6b3a736c0edc74ceec3d82f5252499d7911b3a58.patch
补丁适配:已适配(backport-CVE-2026-86142.patch,置信度 high) - 冲突原因:上游 hunk 上下文为
buffer = xmlMalloc(len);,2.11.9 基线为buffer = (xmlChar *) xmlMallocAtomic(len);(xpointer.c:972);且上游单参数xmlXPathPErrMemory(ctxt)是 master 新公开 API,2.11.9 中同名函数为 xpath.c:686 的 static 双参数,无法调用,git apply --check 实测失败。 - 适配内容:①上下文行与行号对齐,语义零改动;②错误报告替换为 2.11.9 公开等价 API
xmlXPathErr(ctxt, XPATH_MEMORY_ERROR);(均置 error=XPATH_MEMORY_ERROR 并报告内存错误),并保持上游「报告→xmlFree(name)→return」控制流避免泄漏。7 行新增中 6 行与原补丁逐字节一致。 - 落地验证:已真实应用并提交进源码仓库(HEAD aa76186),对干净基线 git apply --check 通过,diff stat 与原补丁一致(xpointer.c | 7 +++++++),最终源码含修复(xpointer.c:971-977)。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/444
─── CVE-2026-86143 ───
受影响性:受影响
- openEuler-24.03-LTS-SP1 / 2.11.9 / 受影响
- 原因:xmlOutputWriteCallback 第三参数为 int(xmlIO.h:100-101)与 xmlBufUse 返回 size_t 的类型不一致在 2.11.9 真实存在:xmlOutputBufferWrite(xmlIO.c:3296)的 int nbchars 直接接收 xmlBufUse() 截断值并无检查地传给 writecallback(3361/3366 行);xmlOutputBufferFlush(xmlIO.c:3628)同样把 size_t 结果内联传入 int 参数,两处 writecallback 调用前均无 INT_MAX 检查,修复尚未应用。
修复补丁:https://github.com/GNOME/libxml2/commit/90f293ba74d28b1d570920382e707586f68ebf35.patch
补丁适配:已适配(backport-CVE-2026-86143.patch,置信度 high) - 冲突原因:hunk 1(xmlOutputBufferWrite 内 INT_MAX 检查)因上游 master 重排版/重构(去 typedef、参数改名 buf→data、MINLEN 检查改写、writecallback 收敛为单一调用点)上下文不匹配;2.11.9 为旧风格签名且存在 encoder/非 encoder 两个调用点(均为截断风险点)。
- 适配内容:在延迟写检查之后原样插入上游 5 行核心检查(逐字节一致),使两个 writecallback 调用点均被 INT_MAX 检查覆盖,与上游语义完全等价;hunk 2(Flush)上下文与基线逐字节一致可直接应用,仅 hunk 头行号偏移。19 条核心 +/- 行(17+/2-)与原补丁逐字节一致,零语义修改、发明代码 0 行。
- 落地验证:6 项跨版本语义验证全过(INT_MAX/错误码符号可用、size_t→int 截断风险实证、结构体字段存在、return 路径无资源泄漏等);已真实应用并提交(HEAD 408b4ed),git apply --check 通过,diff stat 与原补丁一致(xmlIO.c | 19 +++++++++++++++++--),最终源码含修复(xmlIO.c:3357-3361、3659-3663/3670-3674)。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/444
─── CVE-2026-86144 ───
受影响性:受影响
- openEuler-24.03-LTS-SP1 / 2.11.9 / 受影响
- 原因:xmlXIncludeProcess/xmlXIncludeProcessTree(xinclude.c:2442/2487)仍固定为
xmlXIncludeProcessFlags(doc, 0)/xmlXIncludeProcessTreeFlags(tree, 0),不传播 doc->parseFlags(如 XML_PARSE_NONET),缺失该限制时自定义资源加载器可访问网络并触发 XXE/SSRF 等风险,修复尚未应用。
修复补丁:https://github.com/GNOME/libxml2/commit/b63cd517afecb76582dd9488c55e54ceaf50de61.patch
补丁适配:已适配(backport-CVE-2026-86144.patch,置信度 high) - 冲突原因:补丁取自上游 master(2.14+ 代码形态),部分 hunk 上下文引用 2.11.9 不存在的资源加载器重构 API(xmlCtxtSetResourceLoader 等)。原补丁 12 个 hunk:7 个可直接应用,5 个需适配。
- 适配内容(核心修复保真,发明代码 0 行):
- xinclude.c:xmlXIncludeLoadTxt 在 xmlNewParserCtxt() 后插入
xmlCtxtUseOptions(pctxt, ctxt->parseFlags);(核心行与上游逐字节一致,NONET 经 parser.c 并入 ctxt->options → xmlIO.c 加载器层检查闭环生效);xmlXIncludeProcess/ProcessTree 的0 → doc ? doc->parseFlags : 0核心行逐字节一致,仅上下文与行号适配;master 错误白名单 hunk 在 2.11.9 无等价代码路径,按版本差异丢弃,网络拒绝执法完整保留,不降低安全性。 - runtest.c/测试数据:新增 xincludeProcessTest(75 行中 68 行逐字节保留)做 2 处必要 API 替换(xmlCtxtSetErrorHandler → 2.11.9 的 xmlSetStructuredErrorFunc;结尾恢复而非卸载全局错误 handler,避免污染后续套件);.err 期望文件改写为 2.11.9 实际输出格式(已独立推导复核确认)。
- xinclude.c:xmlXIncludeLoadTxt 在 xmlNewParserCtxt() 后插入
- 落地验证:适配后 8 files changed, 101 insertions(+), 2 deletions(-)(原 103+/3-,差值为丢弃 hunk);已真实应用并提交(HEAD 31e9e03),对干净基线 git apply --check 通过,gcc -fsyntax-only(xinclude.c/runtest.c)无错误。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/444
合并 PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/444


/branches openEuler-20.03-LTS-SP4 openEuler-22.03-LTS-SP4 master /name markeryang /email 747675909@qq.com


【任务 #144 · master】bundle CVE-2026-86142+CVE-2026-86143+CVE-2026-86144
─── CVE-2026-86142 ───
是否受影响:不受影响
CVE-2026-86142 的自有补丁经 Step 4 源码影响性分析判为 NOT_APPLICABLE,漏洞代码不存在于本版本(2.15.4)源码中,无需修复。
- master(2.15.4):不受影响(ABI 变化:否)
是否有修复补丁:有
补丁适配情况:无需适配。该补丁经源码影响性分析判为 NOT_APPLICABLE(漏洞代码不存在),未对目标版本做任何适配改动,也无前置补丁。
是否提交 PR:无 PR。
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(2.15.4): 不受影响
ABI 变化:否
原因说明:
1.不受影响-漏洞代码不存在
────────────────────────────────────────
─── CVE-2026-86143 ───
是否受影响:不受影响
CVE-2026-86143 的自有补丁经 Step 4 源码影响性分析判为 NOT_APPLICABLE,漏洞代码不存在于本版本(2.15.4)源码中,无需修复。
- master(2.15.4):不受影响(ABI 变化:否)
是否有修复补丁:有
补丁适配情况:无需适配。该补丁经源码影响性分析判为 NOT_APPLICABLE(漏洞代码不存在),未对目标版本做任何适配改动,也无前置补丁。
是否提交 PR:无 PR。
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(2.15.4): 不受影响
ABI 变化:否
原因说明:
1.不受影响-漏洞代码不存在
────────────────────────────────────────
─── CVE-2026-86144 ───
是否受影响:不受影响
CVE-2026-86144 的自有补丁经 Step 4 源码影响性分析判为 NOT_APPLICABLE,漏洞代码不存在于本版本(2.15.4)源码中,无需修复。
- master(2.15.4):不受影响(ABI 变化:否)
是否有修复补丁:有
补丁适配情况:无需适配。该补丁经源码影响性分析判为 NOT_APPLICABLE(漏洞代码不存在),未对目标版本做任何适配改动,也无前置补丁。
是否提交 PR:无 PR。
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.master(2.15.4): 不受影响
ABI 变化:否
原因说明:
1.不受影响-漏洞代码不存在
────────────────────────────────────────
合并 PR:本 bundle 无已合并的 PR(三个 CVE 均判定为不受影响,无需提交流水线修复 PR)。


【任务 #144 · openEuler-22.03-LTS-SP4】bundle CVE-2026-86142+CVE-2026-86143+CVE-2026-86144
─── CVE-2026-86142 ───
是否受影响:受影响。漏洞路径函数 xmlXPtrEvalXPtrPart 位于 2.9.14 源码 xpointer.c:947,其 962-966 行保留了未检查溢出的漏洞代码基底(len = xmlStrlen(ctxt->cur); len++; buffer = xmlMallocAtomic(...),无 len==0 且 *ctxt->cur!=0 的防护),Step 4 源码影响性分析判为 NEEDS_ADAPTATION,漏洞代码存在于本版本源码,需要修复。
- 分支状态:openEuler-22.03-LTS-SP4(2.9.14):受影响
修复补丁:https://github.com/GNOME/libxml2/commit/6b3a736c0edc74ceec3d82f5252499d7911b3a58.patch
补丁适配情况:已适配(backport-CVE-2026-86142.patch,置信度 high)
- 冲突原因:目标函数在 2.9.14 中位于 xpointer.c:947 而非补丁上下文的 263 行,且后随上下文 'buffer = xmlMalloc(len);' 在 2.9.14 中为 'buffer = (xmlChar *) xmlMallocAtomic(len * sizeof (xmlChar));',git apply --check 因上下文不匹配失败;补丁新增的 1 参调用 xmlXPathPErrMemory(ctxt) 在 2.9.14 中是未导出的 static 双参函数,无法直接调用。
- 适配内容:hunk 头调整为 @@ -962,6 +962,13 @@ 并对齐上下文行;'xmlXPathPErrMemory(ctxt);' 替换为语义等价的公共 API 'xmlXPathErr(ctxt, XPATH_MEMORY_ERROR);'(同文件 2752/2768 行已有同款调用先例,可正确中止级联求值);其余 6 行新增(守卫条件等)与原补丁逐字节一致,核心修复逻辑保真。
- 落地验证:适配补丁已在干净 baseline 上 git apply --check 验证通过,并已提交到源码仓库(HEAD 89f96b5,git diff --stat HEAD~1:xpointer.c | 7 +++++++)。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/454
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-22.03-LTS-SP4(2.9.14): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
─── CVE-2026-86143 ───
是否受影响:受影响。xmlIO.c 的 xmlOutputBufferWrite(xmlIO.c:3337)与 xmlOutputBufferFlush(xmlIO.c:3670)中,xmlBufUse 返回的 size_t 被赋给 int nbchars 或直接作为 int len 实参传入 writecallback(Write 3402-3405 行、Flush 3691-3699 行),均无 INT_MAX 溢出检查,存在可修复代码基底,需要修复。
- 分支状态:openEuler-22.03-LTS-SP4(2.9.14):受影响
修复补丁:https://github.com/GNOME/libxml2/commit/90f293ba74d28b1d570920382e707586f68ebf35.patch
补丁适配情况:已适配(backport-CVE-2026-86143.patch,置信度 high)
- 冲突原因:hunk 2(Flush)上下文与 2.9.14 逐行一致、仅行号偏移,可直接应用;hunk 1(Write)失败——上游 2.15.x 已将 Write 重构为单一 writecallback 调用点,2.9.14 拆分为 encoder/else 两分支,MINLEN 守卫形态不同;且 2.9.14 中 nbchars 为 int,size_t→int 截断发生在赋值处,逐字插入 if (nbchars >= INT_MAX) 对截断后的负值恒假、修复无效。
- 适配内容:镜像 hunk 2 自身写法,在 Write 的两个 writecallback 调用点前各插入 size_t bufsize = xmlBufUse(...) 与 if (bufsize >= INT_MAX) 守卫(错误处理两行逐字保留、writecallback 调用行不改,bufsize < INT_MAX 保证 nbchars 无截断),核心 INT_MAX 溢出检查语义保真。
- 落地验证:适配补丁已在含前置 xpointer 补丁的临时 worktree(89f96b5)上 git apply --check 验证通过,并已提交到源码仓库(commit 90b4e8f,diff --stat:xmlIO.c | 24 ++++++++++++++++++++++--)。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/454
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-22.03-LTS-SP4(2.9.14): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
─── CVE-2026-86144 ───
是否受影响:受影响。xinclude.c 中 xmlXIncludeProcess(xinclude.c:2553)与 xmlXIncludeProcessTree(xinclude.c:2598)均不传播 parseFlags;xmlXIncludeLoadTxt(xinclude.c:1782)在 1864-1865 行新建 pctxt 后直接 xmlLoadExternalEntity、从不传播 ctxt->parseFlags,导致文本 include 绕过 XML_PARSE_NONET——与 CVE 描述一致,需要修复。
- 分支状态:openEuler-22.03-LTS-SP4(2.9.14):受影响
修复补丁:https://github.com/GNOME/libxml2/commit/b63cd517afecb76582dd9488c55e54ceaf50de61.patch
补丁适配情况:已适配(backport-CVE-2026-86144.patch,置信度 high)
- 冲突原因:原补丁基于上游 master/2.14+,与 2.9.14 差异大——baseline 无 xmlCtxtSetResourceLoader/xmlLoadResource/XML_RESOURCE_XINCLUDE_TEXT 等新符号,类型命名 xmlDoc*/xmlNode* 与 baseline 的 xmlDocPtr/xmlNodePtr 不同,runtest.c 依赖 2.14-only 的 xmlCtxtSetErrorHandler。
- 适配内容:xinclude.c 核心行逐字节保留——xmlCtxtUseOptions(pctxt, ctxt->parseFlags) 插入点移至 xmlXIncludeLoadTxt 的 xmlNewParserCtxt 与 xmlLoadExternalEntity 之间(与同文件既有模式同构,NONET 经 pctxt->options 生效);xmlXIncludeProcess/ProcessTree 两条传播 doc->parseFlags 的 return 行仅调整上下文类型;runtest.c 的 xincludeProcessTest 适配为 baseline 全局错误 handler 机制并避免破坏全套件 .err 测试;6 个测试 fixture hunk 直接应用,2 个 .err 期望文案按 baseline 2.9.14 实际输出本地化。核心修复(parseFlags 传播阻断 NONET 绕过)逻辑保真。
- 落地验证:适配补丁已应用并随 bundle 一并提交,包含于下方合并 PR。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/454
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-22.03-LTS-SP4(2.9.14): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
合并 PR:
- openEuler-22.03-LTS-SP4:https://gitcode.com/src-openeuler/libxml2/merge_requests/454


任务已识别:这是 CVE 修复流水线 Step 8 —— 根据事实清单生成 Issue #144(libxml2 bundle,3 个 CVE,目标分支 openEuler-20.03-LTS-SP4)的中文评论。事实清单核验完毕:3 个 CVE 均受影响、均有上游补丁与已验证适配(无前置补丁)、均已提交 PR !455、无流水线失败(跳过第 5 部分)。以下为评论内容:
【任务 #144 · openEuler-20.03-LTS-SP4】bundle CVE-2026-86142+CVE-2026-86143+CVE-2026-86144
─── CVE-2026-86142 ───
是否受影响:受影响
- openEuler-20.03-LTS-SP4(libxml2 2.9.10):受影响
- 原因:xmlXPtrEvalXPtrPart(2.9.10 基线位于 xpointer.c:949)中 len = xmlStrlen(ctxt->cur) 后直接 len++ 并按其分配缓冲(xpointer.c:966-968),xmlStrlen 返回 int(xmlstring.c:422),长度饱和溢出前提成立,修复未预存在,漏洞代码存在于本版本源码。
修复补丁:https://github.com/GNOME/libxml2/commit/6b3a736c0edc74ceec3d82f5252499d7911b3a58.patch
补丁适配情况:已适配 backport-CVE-2026-86142.patch(置信度 high),无前置补丁
- 冲突原因:目标函数在 2.9.10 位于 xpointer.c:949(上游 master 在 263);补丁上下文行 xmlMalloc(len) 与 2.9.10 实际的 xmlMallocAtomic 写法不一致导致 git apply 失败;新增代码调用的单参 xmlXPathPErrMemory(ctxt) 在 2.9.10 中是 xpath.c 的 static 双参函数,无法直接调用。
- 适配内容:hunk 头行号对齐(@@ -263 → @@ -964,函数上下文两版本逐字一致);尾随上下文行对齐为基线 xmlMallocAtomic 写法(仅对齐、不改语义);唯一语义改动为等价 API 替换 xmlXPathPErrMemory(ctxt) → xmlXPathErr(ctxt, XPATH_MEMORY_ERROR)(公开 API,xpointer.c 已有同款调用先例,无需新增 include);其余 6 行核心变更与原补丁逐字节一致,核心修复保真。
- 落地验证:pristine baseline 上 git apply --check 通过,应用后 git diff --stat 确认 xpointer.c +7,新增代码位于 len = xmlStrlen(ctxt->cur) 与 len++ 之间。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/455
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4(2.9.10): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
─── CVE-2026-86143 ───
是否受影响:受影响
- openEuler-20.03-LTS-SP4(libxml2 2.9.10):受影响
- 原因:xmlOutputBufferFlush(xmlIO.c:3669)在 3697/3703 行将 size_t 的 xmlBufUse(out->conv)/xmlBufUse(out->buffer) 直接传给第 3 参数为 int 的 writecallback,无溢出检查;xmlOutputBufferWrite(xmlIO.c:3336)中 int nbchars 被 size_t 的 xmlBufUse() 结果截断(可为负值)后作为 int 传入 writecallback,漏洞模式在 2.9.10 源码中真实存在,需修复。
修复补丁:https://github.com/GNOME/libxml2/commit/90f293ba74d28b1d570920382e707586f68ebf35.patch
补丁适配情况:已适配 backport-CVE-2026-86143.patch(置信度 high),无前置补丁
- 冲突原因:原补丁 2 hunk 仅改 xmlIO.c;hunk2(xmlOutputBufferFlush)上下文几乎逐行一致,仅行号偏移(2662→3692)即原样应用;hunk1(xmlOutputBufferWrite)因上游 master 重构(encoder/非 encoder 两个 writecallback 调用点合并为单一调用点、while-break 控制流)无法直接应用。
- 适配内容:hunk1 改为在 2.9.10 双分支调用点之前的公共位置(goto done 守卫后、xmlIO.c:3397)插入 INT_MAX 检查,一处检查覆盖两个调用点,核心 4 行逐字节保留;唯一额外支撑改动为 nbchars 由 int 宽化为 size_t(xmlBufUse() 返回 size_t,int 截断产生负值会使检查被绕过,上游 master 中该变量即为 size_t),函数内全部使用点经独立核验安全。
- 落地验证:pristine baseline(HEAD=13fa3bc)上 git apply 通过,git diff --stat 确认 xmlIO.c +18/-3;核心变更行逐字节对账仅差声明行 int→size_t 一对,偏离度 0(双 SubAgent 独立核算一致)。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/455
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4(2.9.10): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
─── CVE-2026-86144 ───
是否受影响:受影响
- openEuler-20.03-LTS-SP4(libxml2 2.9.10):受影响
- 原因:xmlXIncludeProcess/xmlXIncludeProcessTree(xinclude.c:2563/2608)仍硬编码 flags=0、不传播 doc->parseFlags(字段存在且解析时赋值);漏洞路径上的 xmlXIncludeLoadTxt(xinclude.c:1795)经 xmlNewParserCtxt()+xmlLoadExternalEntity() 解析且从不传播 parseFlags,NONET 等解析选项不传播漏洞真实存在,修复未预存在。
修复补丁:https://github.com/GNOME/libxml2/commit/b63cd517afecb76582dd9488c55e54ceaf50de61.patch
补丁适配情况:已适配 backport-CVE-2026-86144.patch(置信度 high),无前置补丁
- 冲突原因:原补丁 12 hunk 来自 master/2.14-dev;6 个新增文件 hunk 原样保留,6 个 hunk 因上游 API/结构差异需适配(xmlCtxtSetResourceLoader/xmlLoadResource、xmlCtxtSetErrorHandler 为 2.13+/2.14 API,2.9.10 不存在;errNo 错误过滤结构 2.9.10 不存在)。
- 适配内容:xmlXIncludeLoadTxt 中核心行 xmlCtxtUseOptions(pctxt, ctxt->parseFlags); 逐字插入于 pctxt 创建后(API 存在于 parser.c:15156,xinclude.c:455 已有先例);xmlXIncludeProcess/ProcessTree 的 parseFlags 传播核心行逐字节保留,仅上下文类型名按 2.9.10 调整;errNo 过滤块丢弃(2.9.10 失败路径本就静默 return,语义安全);runtest.c 用 2.9.10 既有全局 xmlSetStructuredErrorFunc 模式替换 2.14 API;两个 .err 期望文件按 2.9.10 实际输出格式适配。
- 落地验证:补丁已落盘(8 files changed, 100 insertions, 2 deletions),对 pre-patch 状态 git apply --check 通过;2.9.10 树构建实测 ./runtest issue1120 通过、XInclude 全家族 64 tests/0 errors、全量 3204 tests/0 errors。
PR:https://gitcode.com/src-openeuler/libxml2/merge_requests/455
──────── 复制以下内容回填 issue ────────
受影响版本排查(受影响/不受影响):
1.openEuler-20.03-LTS-SP4(2.9.10): 受影响
ABI 变化:否
原因说明:
1.正常修复
────────────────────────────────────────
合并 PR(bundle 共 1 个)
- openEuler-20.03-LTS-SP4:https://gitcode.com/src-openeuler/libxml2/merge_requests/455


请合并修复 CVE-2026-86142 CVE-2026-86143 CVE-2026-86144