12 lines
3.4 KiB
Markdown
12 lines
3.4 KiB
Markdown
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 注释。
|