willfaust/Madeira · C · 已 squash 进 main
过长的工作目录会覆盖启动内存
之前24 个用例中 12 个失败含 5 个 ASan 缓冲区溢出
之后0 个失败24 个全部通过
来自 PR #471(macOS arm64 主机复现)。
问题长度 ≥260 个 UTF-16 单元的当前目录被复制进只为 MAX_PATH 预留的槽位,后面写入的字符串会把它覆盖掉。
方法在初始启动和子进程启动两条路径上,都预留 max(MAX_PATH, 实际字节数 + 结尾 NUL),并把该容量写入 DosPath.MaximumLength。较短路径行为不变。
验证ASan/UBSan 测试程序编译真实的分配与打包代码;修复前失败、修复后通过。改动的文件也能为 iOS arm64 编译。PR 中还如实披露了一个与本次无关的既有测试失败。
上游结果维护者把它以 16b3382b 的提交 squash 进了 main,保留了我的署名和 sign-off。