From 383122342afdd2563b9a366981a585f796189a5e Mon Sep 17 00:00:00 2001 From: Leon Zhang Date: Thu, 29 Mar 2018 15:01:22 +0800 Subject: [PATCH 1/2] fix fi overflow cause index out of range panic sql: insert into tb values (1) Fingerprint(sql) got panic: index out of range --- query/query.go | 4 ++++ query/query_test.go | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/query/query.go b/query/query.go index 4f8bfcd..51cbefe 100644 --- a/query/query.go +++ b/query/query.go @@ -157,6 +157,10 @@ func Fingerprint(q string) string { if Debug { fmt.Printf("\n%d:%d %s/%s [%d:%d] %x %q\n", qi, fi, stateName[s], stateName[sqlState], cpFromOffset, cpToOffset, r, r) } + // check `fi` overflow + if fi >= len(f) { + break + } /** * 1. Skip parts of the query for certain states. diff --git a/query/query_test.go b/query/query_test.go index 1daf5fd..d04327f 100644 --- a/query/query_test.go +++ b/query/query_test.go @@ -619,4 +619,11 @@ func TestFingerprintWithNumberInDbName(t *testing.T) { "select 123foo from 123foo", query.Fingerprint(q), ) + // fix fi overflow cause index out of range panic + q = "insert into tb values (1)" + assert.Equal( + t, + "insert into tb values(?+)", + query.Fingerprint(q), + ) } From 213e3657e3a13e90b0b2bb464860de3ae895d6c4 Mon Sep 17 00:00:00 2001 From: Leon Zhang Date: Thu, 22 Nov 2018 09:33:08 +0800 Subject: [PATCH 2/2] update test case TestFingerprintWithNumberInDbName --- query/query_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/query/query_test.go b/query/query_test.go index d04327f..5356ceb 100644 --- a/query/query_test.go +++ b/query/query_test.go @@ -620,7 +620,7 @@ func TestFingerprintWithNumberInDbName(t *testing.T) { query.Fingerprint(q), ) // fix fi overflow cause index out of range panic - q = "insert into tb values (1)" + q = "insert into tb values(1)" assert.Equal( t, "insert into tb values(?+)",