Files
ElyOffice/tasks/reviews/C06.3-r9.md
T

1.6 KiB

FAIL

crates/ely-files/src/key.rs:61 — [P2] 新增账户查询通过 getpwuid 取得共享静态存储,随后在同步保护之外读取 pw_dir;Linux 上另一线程的账户查询可改写该存储,使恢复密钥锁目录漂移。普通账户 /home/reviewer 下,一线程执行原样的 account_home(),另一线程调用 getpwuid(0),第 6 次查询即返回 /root;通过原样公开入口 RecoveryKey::load() 与隔离凭据后端回放,第 9627 次加载出现 PermissionDenied,已有恢复密钥因此加载失败。临时副本改用调用者持有缓冲区的 getpwuid_r 后,同一并发探针 20000 次加载通过。修复方向:采用可重入账户查询,处理缓冲区不足、查询失败与账户缺失,并补并发查询其他账户时锁目录始终属于当前账户的回归。r8 的不同 HOME/XDG_DATA_HOME 双进程初始化回放已通过,两份恢复点均可用最终持久密钥解密。

crates/ely-files/src/key/tests.rs:241 — [P2] 新增 Unix 回归测试将系统账户目录硬编码为 /Users/zacharyzhang,使其他账户及 Linux 的正确实现必然测试失败。macOS 本机 88 项测试通过;Linux 同版本依赖构建后,以普通账户运行得到 86 项通过、1 项失败,此处实际值为 /home/reviewer,期望值为 /Users/zacharyzhang。该测试也没有改变 HOME,无法锁住 r8 的环境覆盖场景。修复方向:从当前测试账户取得基准,在独立子进程中分别设置不同 HOME,验证账户目录和共同锁保持一致,并验证最终持久密钥能解密各进程的恢复点。