lbl
55d4b874bd
fix(fec): 越界 packet_index 不再污染 group,payload 长度防 u16 截断
问题:
1. group 尺寸已知(校验包已到)后,数据分支对任意 packet_index
resize received_shards 并写入,越界索引会把 shard 列表撑出
data_shards+parity_shards,decode_with_rs 长度校验必然失败,
整个 group 报废、FEC 恢复能力丧失;校验包索引落在数据区
(< data_shards)还会直接覆盖数据 shard。
2. 内部批量格式的长度字段为 u16,payload.len() as u16 静默截断。
修复:
- 数据包:group.data_shards 已知时 packet_index >= data_shards 直接丢弃。
- 校验包:packet_index < data_shards 直接丢弃;
received_shards 已被撑大(尺寸未知期的越界包)时放弃该 group。
- 长度字段改用 u16::try_from 检查转换(编码器本就有 Payload too big
前置检查,解码器补齐对称防御)。
测试:越界数据包不污染 group(重构正常产出恢复包)、
数据区校验包索引被拒绝且 group 保持可用。
2026-08-21 02:36:20 +08:00
..
2026-02-10 18:20:39 +08:00
2026-08-21 02:36:20 +08:00
2026-02-10 18:20:39 +08:00
2026-08-20 20:58:07 +08:00