From ed246db55ae322b0be2fdcebae7b26beaf3f9f0d Mon Sep 17 00:00:00 2001 From: Jason Wilder Date: Wed, 8 Nov 2017 17:00:25 -0700 Subject: [PATCH] Fix panic: runtime error: slice bounds out of range Fixes #8538 --- CHANGELOG.md | 6 ++++++ models/points.go | 2 +- models/points_test.go | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36d1c05037..301b1227bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v1.5.0 [unreleased] + +### Bugfixes + +- [#8538](https://github.com/influxdata/influxdb/pull/8538): Fix panic: runtime error: slice bounds out of range + ## v1.4.0 [unreleased] ### Breaking changes diff --git a/models/points.go b/models/points.go index a8098a1cb1..86594da57c 100644 --- a/models/points.go +++ b/models/points.go @@ -1064,7 +1064,7 @@ func scanLine(buf []byte, i int) (int, []byte) { } // skip past escaped characters - if buf[i] == '\\' { + if buf[i] == '\\' && i+2 < len(buf) { i += 2 continue } diff --git a/models/points_test.go b/models/points_test.go index e2e25a1c92..6234fd0203 100644 --- a/models/points_test.go +++ b/models/points_test.go @@ -1341,6 +1341,15 @@ func TestParsePointQuotedTags(t *testing.T) { ) } +func TestParsePoint_TrailingSlash(t *testing.T) { + _, err := models.ParsePointsString(`a v=1 0\`) + if err == nil { + t.Fatalf("ParsePoints failed: %v", err) + } else if !strings.Contains(err.Error(), "bad timestamp") { + t.Fatalf("ParsePoints unexpected error: %v", err) + } +} + func TestParsePointsUnbalancedQuotedTags(t *testing.T) { pts, err := models.ParsePointsString("baz,mytag=\"a x=1 1441103862125\nbaz,mytag=a z=1 1441103862126") if err != nil {