Files
ElyOffice/tasks/reviews/C11.6-r2.md
T

4.1 KiB
Raw Blame History

FAIL

crates/ely-pdf-engine/shim/ely_redact.c:105 — 删除文字后保留标记内容的 /ActualText,违反 PDF-09、§11.4、QA-14。复现:页面内容为 /Span << /ActualText (SECRET-ACTUAL) >> BDC BT /F1 12 Tf 72 700 Td (SECRET-ACTUAL) Tj ET EMC,删除页面区域 [60,70,220,110]。worker 返回 text=0, light=0, objects=0, versions=1;独立读取输出内容流仍得到 /Span<</ActualText(SECRET-ACTUAL)>>BDC q EMC Q,敏感文字可直接恢复。修复方向:删除字形时同步清理对应标记内容的语义文字,并对输出内容流及关联对象增加独立残留检查。本轮自行执行 cargo build -p ely-pdf-engine --bins、cargo test -p ely-pdf-engine(61 项通过)、cargo test -p ely-pdf(90 项通过)、注释检查;上一轮八项对应回归均通过。额外失败探针及独立对象检查记录在 /tmp/c116-r2-probes.log,测试日志在 /tmp/c116-r2-engine.log、/tmp/c116-r2-app.log;669 个项目文件散列保持一致,临时探针及样本已删除,本轮直接调用原树构建的 worker。

crates/ely-pdf-engine/shim/ely_redact.c:100 — 处理后一个区域时会删掉此前刚创建的相交 Redact 批注,重叠标记无法完成删除,违反 PDF-09。复现:页面在 PDF 坐标 (72,700) 绘制 SECRET-OVERLAP,依次标记页面区域 [60,70,160,110] 与 [140,70,220,110]。第二次 drop_touching 删除第一个标记,最终核验返回 8 characters, 2936 light pixels,输出文件被清除;用户通过区域工具画出的两块有效标记无法执行。修复方向:先按全部区域清除原有批注与字段,再创建全部删除标记,补充部分重叠区域的 worker 回归。

crates/ely-pdf-engine/shim/ely_clean.c:174 — 附件清理只删除名称树入口,关联文件的 /AF 引用继续保留附件,违反 PDF-10。复现:PDF 2.0 catalog 的 /Names/EmbeddedFiles 与 /AF [5 0 R] 同时引用 invoice.xml 文件说明字典,其嵌入流含 SECRET-ASSOCIATED-FILE。扫描报告 files=1;执行仅附件清理后报告 files=0,输出的 /AF、文件说明字典与原嵌入流仍可读取。修复方向:将关联文件引用纳入附件计数与删除,清理后独立核对可达的文件说明及嵌入流,增加共享名称树与关联引用的回归。

crates/ely-pdf-engine/shim/ely_clean.c:104 — 元数据遍历只检查各间接对象的顶层字典,遗漏嵌套直接字典,违反 PDF-10。复现:页面 /Resources/Properties/P 为直接属性字典,含 /Metadata 6 0 R;页面通过 /Span /P BDC ... EMC 使用该属性,6 号对象为有效 XMP,标题含 SECRET-MARKED-META。扫描与元数据清理均返回 meta=0,输出仍完整保留属性字典、元数据引用与 XMP 标题,界面也会禁用元数据选项。修复方向:遍历直接字典和数组中的元数据入口,核验使用完整对象范围,并增加标记内容属性字典的回归。

crates/ely-pdf-engine/shim/ely_clean.c:149 — 脚本扫描与清理遗漏链接批注及字段树父节点,违反 PDF-10 与 agents.md 的隐藏内容清理说明。复现:页面 Link 批注的 /A 为 JavaScript,内容含 SECRET-LINK-SCRIPT;文本父字段的 /AA/K 含 SECRET-PARENT-SCRIPT,其子 Widget 位于页面。扫描返回 hidden=0, scripts=0, hidden_annots=0;直接执行隐藏内容清理也返回全零,输出保留两段脚本,界面的隐藏内容选项被禁用。修复方向:覆盖原始页面批注数组中的链接和整棵字段树的动作入口,增加输出对象级回归。

crates/ely-pdf-engine/shim/ely_clean.c:85 — 动作检查只识别入口自身的 /S /JavaScript,遗漏动作链 /Next 中的脚本。复现:catalog 的 /OpenAction 为合法 GoTo 动作,/Next << /S /JavaScript /JS (SECRET-NEXT) >> 串接 JavaScript。扫描与隐藏内容清理均报告 scripts=0,输出保留 SECRET-NEXT,打开动作仍可触发该脚本,违反 PDF-10 与 agents.md 的脚本清理说明。修复方向:遍历动作链的字典及数组,清除脚本节点并保留其余合法动作,增加带非脚本入口的链式动作回归。