diff --git a/app/import_functions.go b/app/import_functions.go index dff3473b28..f8f95fa1c6 100644 --- a/app/import_functions.go +++ b/app/import_functions.go @@ -1867,7 +1867,8 @@ func (a *App) importEmoji(data *EmojiImportData, dryRun bool) *model.AppError { } defer file.Close() - if _, err := a.WriteFile(file, getEmojiImagePath(emoji.Id)); err != nil { + reader := utils.NewLimitedReaderWithError(file, MaxEmojiFileSize) + if _, err := a.WriteFile(reader, getEmojiImagePath(emoji.Id)); err != nil { return err } diff --git a/app/import_functions_test.go b/app/import_functions_test.go index d1f437220b..7f8e1c1888 100644 --- a/app/import_functions_test.go +++ b/app/import_functions_test.go @@ -19,6 +19,7 @@ import ( "github.com/mattermost/mattermost-server/v6/shared/mlog" "github.com/mattermost/mattermost-server/v6/store" "github.com/mattermost/mattermost-server/v6/testlib" + "github.com/mattermost/mattermost-server/v6/utils" "github.com/mattermost/mattermost-server/v6/utils/fileutils" ) @@ -4178,6 +4179,12 @@ func TestImportImportEmoji(t *testing.T) { data = EmojiImportData{Name: ptrStr("smiley"), Image: ptrStr(testImage)} err = th.App.importEmoji(&data, false) assert.Nil(t, err, "System emoji should not fail") + + largeImage := filepath.Join(testsDir, "large_image_file.jpg") + data = EmojiImportData{Name: ptrStr(model.NewId()), Image: ptrStr(largeImage)} + err = th.App.importEmoji(&data, false) + require.NotNil(t, err) + require.Contains(t, err.DetailedError, utils.SizeLimitExceeded.Error()) } func TestImportAttachment(t *testing.T) { diff --git a/tests/large_image_file.jpg b/tests/large_image_file.jpg new file mode 100644 index 0000000000..eb049be8ba Binary files /dev/null and b/tests/large_image_file.jpg differ