Expand description
解析不可信输入时的健壮性上界(见 docs/research/07-platform-and-sidechannels.md §8.3)。
§为什么这些上界必须存在
头部里的长度字段来自不可信的文件内容。若不设上界,一个 12 字节的恶意头部
声明 tlv_len = 0xFFFFFFFF 就能让实现尝试分配 4 GiB 内存——无需任何有效密钥,
纯粹的拒绝服务。
§这一组与 MIN_CHUNK_SIZE 那一组的区别
本模块存在两套边界,用途完全不同,不可混用:
| 用途 | 常量 | 作用位置 |
|---|---|---|
| 解析上界(防 DoS) | parse_limits::* | 读取任何文件时,必须校验 |
| 新建策略范围 | MIN_CHUNK_SIZE/MAX_CHUNK_SIZE | 仅创建文件时校验 |
解析上界比策略范围宽松得多,这是刻意的:格式允许的取值范围应大于本实现推荐用户 选择的范围,否则会拒绝其它实现产出的合法文件(测试向量 v3/v4 即用 4096/2048 字节的块)。
Constants§
- MAX_
FOLDER_ ENTRIES - 容器模式目录条目数上限。
- MAX_
HEADER_ LEN header_len上限:64 MiB。含缩略图的头部也远小于此值。- MAX_
INDEX_ ENTRIES - 压缩索引条目数上限。
- MAX_
PARSE_ CHUNK_ SIZE - 解析时接受的最大分块大小:64 MiB。
- MAX_
TLV_ ENTRIES - TLV 条目数上限,防止大量零长度条目耗尽内存。
- MAX_
TLV_ LEN tlv_len上限:32 MiB。