From 1ea04f1577ca7d21d0830064cd91c044e1574102 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sat, 5 Jan 2019 10:33:50 +0100 Subject: [PATCH] importers: Fixed panic in mirclike.ParsePost if the post contains no text. --- internal/importers/mirclike/post.go | 6 ++++++ internal/importers/mirclike/post_test.go | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/internal/importers/mirclike/post.go b/internal/importers/mirclike/post.go index c2978ca..fee3e72 100644 --- a/internal/importers/mirclike/post.go +++ b/internal/importers/mirclike/post.go @@ -52,6 +52,9 @@ func ParsePost(line string, date time.Time, prev models.Post) (models.Post, erro if line[tsEndIndex+2] == '*' { split := strings.SplitN(line[tsEndIndex+4:], " ", 2) + if len(split) == 1 { + return models.Post{}, ErrNotPost + } post := models.Post{ ID: "UNASSIGNED", @@ -70,6 +73,9 @@ func ParsePost(line string, date time.Time, prev models.Post) (models.Post, erro return post, nil } else if line[tsEndIndex+2] == '<' { split := strings.SplitN(line[tsEndIndex+2:], " ", 2) + if len(split) == 1 { + return models.Post{}, ErrNotPost + } post := models.Post{ ID: "UNASSIGNED", diff --git a/internal/importers/mirclike/post_test.go b/internal/importers/mirclike/post_test.go index c88a86e..17b9cd9 100644 --- a/internal/importers/mirclike/post_test.go +++ b/internal/importers/mirclike/post_test.go @@ -71,6 +71,10 @@ func TestParsePostErrors(t *testing.T) { {"[10] Things said.", mirclike.ErrNotPost}, {"[12:34:56:789] Things said.", nil}, {"[12:34:56.789] Things said.", mirclike.ErrNotPost}, + {"[12:34] ", mirclike.ErrNotPost}, + {"[12:34] * Stuff", mirclike.ErrNotPost}, + {"[12:34] =Scene=", mirclike.ErrNotPost}, + {"[12:34] <=Scene=>", mirclike.ErrNotPost}, } for i, row := range table {