You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下fuzz测试TDengine执行查询触发断言失败问题求助

问题根因

该报错是TDengine 2.0.19.0版本的布尔类型字面量解析缺陷导致。src/common/src/tvariant.c第38行的断言逻辑仅校验了bool关键字后的值是否匹配false,未兼容true的单字符缩写t,输入bool 't'时校验不通过直接触发SIGABRT信号终止进程。

解决方案

  • 临时规避:编写SQL时布尔字面量使用完整形式,将bool 't'替换为bool 'true'、bool 'f'替换为bool 'false',不要使用单字符缩写即可避免崩溃。也可改用CAST(1 AS BOOL)表示真、CAST(0 AS BOOL)表示假,跨版本兼容性更好。
  • 源码修复:修改src/common/src/tvariant.c中tVariantCreate函数的布尔解析逻辑:
    1. 先判断输入字符串长度,长度为1时单独校验:字符为t/T时识别为真,f/F时识别为假
    2. 长度≥4时匹配完整字符串true,长度≥5时匹配完整字符串false
    3. 移除原有的不合理断言,补充非法布尔值的友好错误提示,避免进程直接崩溃
  • 版本升级:该问题是2.0.x旧版本的已知bug,直接升级到TDengine 2.2.0.0及以上稳定版本即可,官方已在后续版本修复该断言漏洞。

内容的提问来源于stack exchange,提问作者hook capt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:57:05