Files
ElyOffice/tasks/reviews/C11.7-r1.md
T

12 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FAIL
crates/ely-pdf-engine/shim/ely_sign.c:210 — 签名验证列表只遍历页面的 Widget,遗漏 AcroForm 字段树里的不可视数字签名,违反 PDF-12、QA-15。复现:创建 `/AcroForm /Fields` 下含 `/FT /Sig /V`、无页面 Widget 的字段,以测试证书对正确 ByteRange 创建 detached PKCS #7 签名;OpenSSL 独立验证成功,worker 的 `signed()` 返回 1,`signatures()` 返回 `[]`。真实窗口的提示条与状态栏显示已签名,打开 Signatures 后却显示 “No signature fields”。修复方向:按字段树枚举并校验数字签名,将页面与外观作为可选定位信息。证据:`/tmp/ely-c117-review-logs/probes.log`、`native.log`、`native-signatures-ax.txt`,并已人工核对窗口截图。
apps/ely-pdf/src/engine.rs:138;crates/ely-office/src/save.rs:265 — 已签文件另存为后,标签切换到已去签名的新文件,内存文档与签名验证结果仍来自原文件,违反 PDF-12、QA-15。复现:打开已签 PDF,读取签名列表,再通过 `write_as()` 另存为 `copy.pdf`;独立 worker 读回新文件得到 `signed=0`,当前标签已经指向新路径且 `risk=None`,签名列表仍含原来的有效签名。应用探针记录 `disk_signed=0, displayed_signed=1, risk=None` 并断言失败;清缓存后重新读取也会查询仍持有原签名的 worker 文档。修复方向:成功另存为时同步标签、引擎文档与签名状态,使验证对象和当前文件一致,并增加保存后重新读取签名的回归。证据:`/tmp/ely-c117-review-logs/app-probes.log`、`probes.log`。
apps/ely-pdf/src/sign.rs:292 — 后台签名成功回调通过 `cancel_sign()` 清除当前活动标签的 `sign_at`,操作归属随标签切换而改变。复现:标签 A 发起写出签名副本,完成前切到标签 B 并建立 B 的签名位置;A 完成后 B 的签名位置被清除,A 的位置继续保留,返回 A 会再次出现旧的签名表单。应用探针实际得到 `(A=Some(at), B=None)`,预期为 `(A=None, B=Some(at))`;副本中改为按发起标签及位置清理后,同一探针通过。修复方向:成功回调绑定发起时的标签、视图与签名位置,只关闭对应操作的表单。证据:`/tmp/ely-c117-review-logs/app-probes.log`、`mutation-repair.log`。
apps/ely-pdf/src/protect.rs:98 — 所有者密码认证成功后无条件清空 `viewer.secure`,会关闭后来打开的其他文档对话框。复现:在受限标签 A 提交正确所有者密码,等待期间取消旧对话框、切到同样受限的标签 B 并打开 B 的所有者密码框;A 的认证回包清空 B 的框,B 仍受限制。应用探针记录 A 权限为 127、`newer_dialog_survives=false` 并失败;副本中增加发起标签核对后,同一探针通过。修复方向:保留认证发起时的标签与输入框身份,只清理仍对应这次请求的对话框;权限更新继续归属 A。证据:`/tmp/ely-c117-review-logs/app-probes.log`、`mutation-repair.log`。
patches/mupdf/0004-signature-reason-and-location.patch:14 — 新增 C 注释含 13 个英文词,另在第 37 行新增 12 词注释,均超过 agents.md 的十词上限。按空白分词可直接复现;`tests/scripts/comments.py` 仍返回 PASS,因为它对 `.patch` 只匹配新增的 `//` 注释。修复方向:将这两条注释缩短到十词以内,并让现有检查覆盖补丁新增的 C 注释。