A Struct Sockaddr Sequel
5 months ago
- #kernel
- #memory-safety
- #networking
- struct sockaddr传统上定义了一个固定大小的sa_data字段,这已无法满足现代网络地址的需求
- 由于struct sockaddr被嵌入到其他结构中,尝试将sa_data重新定义为柔性数组成员会导致编译器警告
- 新引入的struct sockaddr_unsized供内部使用,适用于需要sa_data大小灵活但已知的场景
- 网络子系统正在更新以使用struct sockaddr_unsized,使struct sockaddr可以恢复其经典定义
- 未来工作可能包括为sockaddr_unsized结构添加边界检查,可能会增加sa_data_len字段
- 尽管已有Rust语言可用,但内核大量C代码仍需逐步改进内存安全性