#2851·wabt

零大小的文本输出缓冲区会导致越界访问

作者: Sn0wyDay创建于 2026年9月9日更新于 2026年9月9日

描述和影响 WriteFloatHex()WriteDoubleHex() 以及 WriteUint128() 后面的共享实现在格式化值被截断时,会从输出大小中减去 1,当调用者提供 size == 0 时,该减法会转换为 SIZE_MAX,导致无效的复制长度或数组索引。在使用 AddressSanitizer 和 UndefinedBehaviorSanitizer 的构建中,浮点和双精度包装器会以 AddressSanitizer: negative-size-param: (size=-1) 方式中止,而 WriteUint128() 在索引为 18446744073709551615 时会中止。如果没有 sanitizer 检查,这些访问是不定行为,可能会导致使用 libwabt 的进程崩溃。

内容来源: WebAssembly/wabt