Parsing Integers in C
6 months ago
- #parsing
- #security
- #libc
- atoi()和atol()是将ASCII数字转换为整数的基本但易出错函数,缺乏溢出检查且不具备跨平台可靠性
- strtol()及其变体提供了溢出检测等更多功能,但仍存在空白字符处理和跨平台兼容性问题
- curl项目强调严格解析以确保安全性和功能性,拒绝错误数据并通过溢出检查确保精确数字解析
- curlx_str_number()是curl中用于严格数字解析的自定义函数,禁止空白字符和前缀,确保64位支持并包含最大值检查
- 截至2025年11月12日,curl已从源代码中移除所有atoi()和strtol()等弱函数调用,增强了安全性和严格性
- 'curlx'前缀表示libcurl和curl工具共享的函数,减少了代码重复且不会在libcurl API中暴露这些函数