已开启
fix(execd): validate binary hex before decoding and reject bad fs_write data #57
庄昭雄创建于 16 天前
fix(execd): validate binary hex before decoding and reject bad fs_write data #57
已开启
合并受阻
atomgit-bot
16 天前 评论:
16 天前 评论:
变更摘要
本 PR 针对 platform/runtime/execd/src/runtime/fs.rs 中客户端可控制载荷的二进制 hex 解码路径进行修复。核心是让 decode_hex 在按字节切片前先校验输入是否为 ASCII hex,避免多字节 UTF-8 输入触发的字符边界 panic;同时让 fs_write 的 binary 分支复用同一解码器,使非法 hex 返回结构化错误而非静默产生 0 字节文件并返回成功。合法输入行为保持不变,非法输入统一由 panic/假成功转为带 error 的错误结果。
主要改动
decode_hex增加 ASCII hex 校验: 在偶数长度判断后新增data.bytes().all(|byte| byte.is_ascii_hexdigit())校验,非 ASCII hex 返回Err("invalid hex data: non-hexadecimal character"),消除按字节下标切片时的非字符边界 panic。fs_write的binary分支改用decode_hex: 替换原先filter_map(..ok())的静默丢弃逻辑,解码失败时返回既有{path,name,type,size,error}形状且不写文件,使fs_write与fs_write_chunk的错误契约一致。- 新增两条单测:
binary_single_shot_write_rejects_invalid_hex验证binary=true, data="zz"返回非 nil 的error且不创建文件;binary_chunk_write_rejects_non_ascii_hex_without_panicking验证data="a€"走fs_write_chunk时报错且不 panic、不落盘。 - 新增测试辅助函数: 添加
field、fixture_path两个测试辅助函数,用于从返回值中提取字段并生成带时间戳与进程 ID 的临时文件路径。


不准确?
atomgit-bot
16 天前 评论:
16 天前 评论:
openJiuwen-bot
16 天前 评论:
16 天前 评论:
欢迎来到 openJiuwen 社区
Hey @grandocean , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。


atomgit-bot
16 天前 评论:
16 天前 评论:
16 天前 添加了label:openJiuwen-cla/yes
16 天前 修改了pull request 的描述
openJiuwen-bot
16 天前 评论:
16 天前 评论:
16 天前 修改了pull request 的描述
openJiuwen-bot
16 天前 评论:
16 天前 评论:
The pipeline(pipeline number:57) is running. Please wait a moment...


16 天前 添加了label:ci-running
16 天前 删除了label:ci-running
16 天前 添加了label:ci-successful
Paired: GitHub #46 ↔ GitCode !57
probe