From 079f752478becc2e00df49c49aafd880608bdc34 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Mon, 9 Jan 2023 22:25:29 +0530 Subject: [PATCH] MM-49546: Sentry crash: fix nil pointer dereference (#22018) We return a store error always to be handled correctly at the app layer. https://mattermost.atlassian.net/browse/MM-49546 ```release-note NONE ``` Co-authored-by: Mattermost Build --- app/post_test.go | 7 +++++++ store/sqlstore/thread_store.go | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/post_test.go b/app/post_test.go index 4630eb75af..3e6b090419 100644 --- a/app/post_test.go +++ b/app/post_test.go @@ -2409,10 +2409,17 @@ func TestFollowThreadSkipsParticipants(t *testing.T) { require.True(t, p.Id == sysadmin.Id || p.Id == user.Id) } + oldID := threadMembership.PostId threadMembership.PostId = "notfound" _, err = th.App.GetThreadForUser(threadMembership, false) require.NotNil(t, err) assert.Equal(t, http.StatusNotFound, err.StatusCode) + + threadMembership.Following = false + threadMembership.PostId = oldID + _, err = th.App.GetThreadForUser(threadMembership, false) + require.NotNil(t, err) + assert.Equal(t, http.StatusNotFound, err.StatusCode) } func TestAutofollowBasedOnRootPost(t *testing.T) { diff --git a/store/sqlstore/thread_store.go b/store/sqlstore/thread_store.go index 0de9c5db45..f4c81ed450 100644 --- a/store/sqlstore/thread_store.go +++ b/store/sqlstore/thread_store.go @@ -503,7 +503,7 @@ func (s *SqlThreadStore) GetThreadFollowers(threadID string, fetchOnlyActive boo func (s *SqlThreadStore) GetThreadForUser(threadMembership *model.ThreadMembership, extended, postPriorityEnabled bool) (*model.ThreadResponse, error) { if !threadMembership.Following { - return nil, nil // in case the thread is not followed anymore - return nil error to be interpreted as 404 + return nil, store.NewErrNotFound("ThreadMembership", "") } unreadRepliesQuery := sq.