3.8 KiB
FAIL
crates/ely-lok/src/client/tests.rs:35 — R1 的宏回归测试缺陷仍在。fixture 把 Basic 源码直接放进 office:script,并使用无效的 office:events/office:event-listener 绑定,内核无法据此执行 Sneaky。隔离副本把加载选项改成 EnableMacrosExecution=true,MacroSecurityLevel=0 后,a_macro_never_writes_its_marker 仍通过。另用含嵌入 Basic 库、模块及 script:event-listener 的有效样本作对照,同一补丁内核在放开权限后写出了标记,原实现阻止了标记。替换成经正向对照验证的自动执行样本,并要求放开宏的变异使测试失败。
crates/ely-lok/src/worker.rs:117 — 关闭清理吞掉目录读取失败及枚举错误,其他删除失败也只记录日志,随后仍以 0 退出。真实补丁内核打开并关闭文档后,将隔离 profile/tmp 权限设为 000,再调用 shutdown(),实测返回 Ok(());恢复权限后仍有两个 lu*.tmp 文件。SHUTDOWN 的成功应答还在清理前发送。将清理失败纳入关闭结果,在清理完成后发送应答,并覆盖目录读取、文件删除失败,保证 LOK-10 的失败对调用方可见。
crates/ely-lok/src/client.rs:147 — shutdown 在应答缺失或协议错误时直接返回,跳过 child.wait();Drop 再次发送失败后也只写日志。注入完成版本及图块握手、收到 SHUTDOWN 后无应答退出 23 的工作进程,shutdown 已正确返回错误,但释放 Worker 后,存活父进程下的子进程仍被 ps 标为 Z <defunct>。工作进程崩溃会持续积累僵尸进程。保留原始错误,并让发送、接收和协议失败路径均完成子进程终止及回收;增加释放 Worker 后确认子进程已回收的断言。
crates/ely-lok/src/client.rs:97 — 新增图块自检直接把文件路径拼进 URL,遗漏百分号编码。真实补丁内核使用名为 profile#hash 或 profile%20literal 的合法配置目录时,Worker::spawn 均返回自检文件的 Unsupported URL ... type detection failed;普通目录及相对目录成功。# 被解释为片段,%20 被解码为空格,导致 LOK-01 的加载流程失败。将自检文件通过正确的本地路径到文件 URL 转换传入内核,覆盖保留字符路径。
crates/ely-lok/src/worker.rs:300 — R1 的配置路径修复仍未处理 Windows 路径。canonicalize 产生的盘符路径及扩展前缀被整体百分号编码;隔离探针把 \\?\C:\Users\test\profile 传给实际 helper,得到 file://%5C%5C%3F%5CC%3A%5CUsers%5Ctest%5Cprofile,预期本地路径断言失败。该结果没有合法的本地文件 URL 路径,无法指向要求隔离的配置目录。按平台转换盘符、分隔符及 UNC 路径,再编码路径内容;为 Windows 路径增加精确 URL 和实际配置落点验证。
crates/ely-lok/src/client.rs:71 — R1 的固定版本校验仍只检查全文是否包含提交哈希。注入成功返回图块计数、版本中 ProductVersion 为 99.0 的工作进程,Worker::spawn 返回成功;仅包含该哈希的非 JSON 文本也被接受。完整版本和 BuildId 字段的契约因此没有落实。解析版本结构并逐项核对固定版本及 BuildId,拒绝缺字段、错误字段及畸形载荷,补充这些握手失败测试。
scripts/build-libreoffice.sh:57 — R2 缩短补丁注释后,脚本无法继续使用已经应用 R1 补丁的源码缓存。将当前固定提交及已打旧补丁的 init.cxx 放入隔离缓存,实跑脚本以 1 退出并报 patch does not apply:新补丁的反向检查因注释变化失败,随后正向应用又遇到已经修改的代码。现有构建目录可直接复现。为已知旧补丁提供受校验的迁移或缓存重建流程,保留对未知本地改动的保护,并覆盖旧补丁缓存升级及升级后重复运行。