Skip to content

fix: 读取内部 workspace 父工程 pbx 前校验路径 - #112

Merged
kairowan merged 1 commit into
mainfrom
fix/mcp-eighth-audit-20261113
Nov 13, 2026
Merged

kairowan merged 1 commit into
mainfrom
fix/mcp-eighth-audit-20261113

Conversation

@kairowan

Copy link
Copy Markdown
Owner

来源

修复 2026-11-13/MCP第七轮复审/复审报告.md 中的 1 项问题。

修复内容

  • validate_ios_cocoapods_paths 在读取用于判断 CocoaPods 的 project.pbxproj 之前,先对实际路径执行 canonicalize + 允许目录校验
  • 覆盖 Host.xcodeproj/project.xcworkspace 内部 workspace:父工程自己的 project.pbxproj 不在 workspace bundle 扫描范围内,现在会在读取前单独校验
  • 普通 .xcodeproj 入口也走同一读取前约束,不因此前 bundle 已扫描而跳过
  • 文件不存在时保持原行为(读取为空、由 CLI 判定),不引入额外误拦截

验证

  • cargo fmt --all --check
  • 全量 clippy -D warnings
  • cargo test -p shellsmith-mcp:3 个单元测试 + 39 个集成测试通过
  • cargo test -p shield-cli:22 passed
  • cargo test -p shield-core:263 passed, 8 ignored
  • python3 -m unittest discover -s scripts/tests:48 passed
  • 真实 CLI 探针:
    • 内部 project.xcworkspace 的父工程 project.pbxproj -> 外部文件 时,check 和 protect 均在 MCP 边界拒绝
    • 父工程 pbx 恢复为允许目录内普通文件后,内部 workspace 的 check 和 protect 成功
    • 更早的入口别名、锁文件外链、路径遍历、compat 和 JSON 报告回归继续通过

未实机验证

  • 未新增 Windows、APK 安装启动、真实 Xcode Archive 或 16KB 运行验证

- CocoaPods 判定读取 project.pbxproj 前先规范化并校验允许目录
- 覆盖 Host.xcodeproj/project.xcworkspace 的父工程 pbx 外链
- 普通工程入口保持相同读取前约束
- 增加内部 workspace 父工程外链及合法路径回归测试
@kairowan
kairowan merged commit 914c6e5 into main Nov 13, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant