Files
云服务部-叶林立andDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 2b21163a18 fix(pi-permission-system): bash 命令枚举下降进入控制流与赋值载荷
for/while/if/case/{ }/函数体此前只按整段文本匹配,
"for d in ...; do n=$(find ...); done" 中的 find 绕过了 find* deny(真实会话复现);
x=$(grep ...)、export X=$(find ...)、! grep ... 同样绕过。

控制流语句仍整段判定,并逐条枚举条件与体内命令;do/else/case 分支容器只下降不单独成单元;
其余语句兜底额外枚举其中的 $(…)。结果只会更严,hard guard 共享同一枚举。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-22 00:14:49 -07:00

1.8 KiB

上游来源(多个)

本目录由 my-pi 组合包直接维护,组合了两份独立 MIT 许可的来源。

pi-permission-system

pi-permission-auto-review(已整合)

AutoReview 源码已整合进 src/auto-review/,不再保留或加载第二个顶层扩展;其来源记录与本地集成差异见 docs/auto-review/UPSTREAM.md。

本地维护

本目录不是 submodule,不保留嵌套 .git、上游 .pi 本地状态、dist/ 或构建产物。同步任一上游时必须从其源码仓库的明确 tag/commit 移植并与本地改动对照审查,不得整体覆盖,也不得使用 npm 预编译产物作为导入源。

本地改动

  • Bash 命令枚举在保留整条控制流语句为独立 command unit 的基础上递归下降:for/while/until、if/elif/else、case 分支、{ … } 组合语句、函数定义与 ! 取反命令体内的命令也按 bash pattern 逐条判定;赋值与声明值(x=$(…)、export X=$(…))、值列表、case 词与 [[ … ]] 测试中的 $(…) 替换同样枚举,而 do …; done、elif/else、case 分支等纯容器不再单独产生 unit。藏在循环体、取反前缀或赋值载荷里的 find/grep/rm 等不再绕过 deny 或 hard guard。