ParseNumber: 当小数点后面有 ~20亿个前导零时发生有符号溢出
作者: nvartolomei创建于 2026年8月20日更新于 2026年8月20日
`ParseNumber()` 有两个带符号溢出的 UB 位置: 1. `--expFrac` 在小数循环中,每个位数一次,没有上限。 2. `int maxExp = 308 - expFrac;` 一个全零的小数会将 significandDigit 置为 0,因此 `--expFrac` 会在每个位数上运行。在 2147483340 个小数位中, expFrac 传递了 -(INT_MAX-308),两个位置都溢出。
内容来源: Tencent/rapidjson