From 26e3bc0a24003cd617d74278c73e030ee4e496d4 Mon Sep 17 00:00:00 2001 From: Ibrahim Serdar Acikgoz Date: Wed, 7 Oct 2020 11:16:36 +0300 Subject: [PATCH] app/post_metadata: add a check to type casting (#15821) --- app/post_metadata.go | 6 +++++- app/post_metadata_test.go | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/post_metadata.go b/app/post_metadata.go index 069cef01d6..143fe6eb95 100644 --- a/app/post_metadata.go +++ b/app/post_metadata.go @@ -71,7 +71,11 @@ func (a *App) OverrideIconURLIfEmoji(post *model.Post) { if !ok || prop == nil { return } - emojiName := prop.(string) + + emojiName, ok := prop.(string) + if !ok { + return + } if !*a.Config().ServiceSettings.EnablePostIconOverride || emojiName == "" { return diff --git a/app/post_metadata_test.go b/app/post_metadata_test.go index 6c8b085898..bc6cf706d9 100644 --- a/app/post_metadata_test.go +++ b/app/post_metadata_test.go @@ -358,6 +358,25 @@ func TestPreparePostForClient(t *testing.T) { }) }) + t.Run("post props has invalid fields", func(t *testing.T) { + th := setup(t) + defer th.TearDown() + + post, err := th.App.CreatePost(&model.Post{ + UserId: th.BasicUser.Id, + ChannelId: th.BasicChannel.Id, + Message: "some post", + }, th.BasicChannel, false, true) + require.Nil(t, err) + + // this value expected to be a string + post.AddProp(model.POST_PROPS_OVERRIDE_ICON_EMOJI, true) + + require.NotPanics(t, func() { + _ = th.App.PreparePostForClient(post, false, false) + }) + }) + t.Run("proxy linked images", func(t *testing.T) { th := setup(t) defer th.TearDown()