sqle
sqle copied to clipboard
FingerPrint算法数组越界导致Pnanic
版本信息(Version)
sqle@latest
问题描述(Describe)
使用特定SQL生成指纹时,由于生成的指纹长度大于原有SQL,FingerPrint算法访问的数组越界,产生panic 类似问题:https://github.com/percona/go-mysql/pull/30
截图或日志(Log)
临时修复方案
- 在每次访问数组前(10处)判断数组是否越界,若越界,返回原始SQL,并且在外侧打印日志
如何复现(To Reproduce)
func TestName(t *testing.T) {
fp := query.Fingerprint(`insert into tb values(1)`)
fmt.Println("11", fp)
}
// 这条SQL虽然是错误的,但也可以触发panic :SELECT*FROM (SELECT * FROM tb values(1));